设置Yii2中所有输入框的class

Set the class of all Input Boxes in Yii2

我有一个用 Yii2 设计的 Web 应用程序。客户端希望所有的文本框都是shorter/smaller。在 bootstrap 中,除了 "form-control",我还需要添加 "input-sm" class。

不过就Yii2而言,在model中设置了form-controlclass。示例:ActiveField 模型的 has

'inputOptions' => [
    'class' => 'form-control',
],

但是,我正在使用各种小部件和扩展程序,需要一个受支持的解决方案来设置 class,以便通过一些编辑,我可以使所有文本框和其他控件看起来更小。我不想在每个表单中都提及自定义 inputOptions。

一个解决方案可能是扩展我使用的所有模型并在那里设置 class (input-sm),但更喜欢 CSS 或更简单的解决方案。

扩展你的活跃领域Class为:-

<?php


namespace auction\widgets;
use yii\helpers\ArrayHelper;

class ActiveField extends \yii\widgets\ActiveField{

    //Error Options For Active Field Error Tag
    public $errorOptions= ['class' => 'error', 'tag' => 'span'];

    public function init(){

        //Changing Input Options Merge with form-class
        $this->inputOptions = ['placeHolder' => $this->model->getAttributeLabel($this->attribute), 'class' => 'input-sm'];

        parent::init();
    }

    /**
     * @param null $label Setting Label Value to false
     * @param array $options
     */
    public function label($label = null, $options = [])
    {

        $this->parts['{label}'] = '';

    }

}

现在使用 ActiveForm 作为:-

      <?php $form = ActiveForm::begin([
                    'id' => 'login-form',
                    'fieldClass' => 'auction\widgets\ActiveField',
                    'successCssClass' => false,
                    'options'=> ['role' => 'form']]); ?>