2

我有一个用 Yii2 设计的 Web 应用程序。客户希望所有文本框更短/更小。在引导程序中,除了“form-control”之外,我还需要添加“input-sm”类。

但是,就 Yii2 而言,form-control 类是在模型中设置的。示例:ActiveField 模型具有

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

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

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

4

1 回答 1

0

将您的活动字段类扩展为:-

<?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']]); ?>
于 2015-10-26T06:41:42.850 回答