garazol / yii2-add-body-class
YII2 组件,允许我们从控制器轻松地为 HTML body 元素分配 CSS 类
v1.3
2017-03-08 14:56 UTC
Requires
- yiisoft/yii2: ^2.0.0
Requires (Dev)
- yiisoft/yii2-codeception: ^2.0.0
This package is not auto-updated.
Last update: 2024-09-26 20:10:23 UTC
README
这个 Yii2 行为类允许我们从控制器为布局 HTML body 元素分配 CSS 类。
1. 下载
可以使用 composer 安装 Yii2-add-body-class。运行以下命令下载并安装 Yii2-add-body-class
composer require garazol/yii2-add-body-class
2. 配置
在基本控制器中放置行为定义
(有关特殊参数的详细检查,请参阅此块中的注释。)
// reference to the behavior class: use garazol\yii2AddBodyClass\components\behaviors\BodyClassBehavior; // add body class behavior configuration to the behaviors method: /** * @inheritdoc */ public function behaviors() { return [ 'BodyClassBehavior' => [ 'class' => BodyClassBehavior::className(), // you can define here what kind of classes should be rendered automatically // key: AUTO_GENERATE_USER_LOGGED_STATUS can provide user-logged-in or user-logged-out // key: AUTO_GENERATE_CONTROLLER_ACTION can provide the current controller and action name classess, e.g.: controller-site and action-index // key: AUTO_GENERATE_MODULE can provide the current module, e.g.: module-example 'autoGeneratedClassTypes' => [ BodyClassBehavior::AUTO_GENERATE_USER_LOGGED_STATUS, BodyClassBehavior::AUTO_GENERATE_CONTROLLER_ACTION, BodyClassBehavior::AUTO_GENERATE_MODULE, ], // you can control the class style // for hyphen separated classes use this (default) (results: user-logged-in) 'classStyle'=>BodyClassBehavior::CLASS_STYLE_HYPHEN,//default // for camel case classes use this constant (results: userLoggedIn) //'classStyle'=>BodyClassBehavior::CLASS_STYLE_CAMEL_CASE, ], ]; }
在布局模板中,您可以渲染组合的 body 类
<body class="<?= Html::encode($this->context->renderBodyClasses()); ?>">
在任何控制器(从基本控制器扩展并继承行为的控制器)中,您可以轻松地向 body 添加额外的类,只需使用
public function actionExample() { // code here... $this->addBodyClass('example'); // or multiple classes $this->addBodyClass(['example', 'something']); // remove addded class $this->removeBodyClass('example'); //remove multiple classes $this->removeBodyClass(['example', 'something']); }