garazol/yii2-add-body-class

YII2 组件,允许我们从控制器轻松地为 HTML body 元素分配 CSS 类

安装: 854

依赖: 0

建议者: 0

安全: 0

星标: 2

关注者: 2

分支: 0

开放问题: 0

类型:yii2-component

v1.3 2017-03-08 14:56 UTC

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']);
}

查看此示例代码以获取实际示例。