设置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']]); ?>
我有一个用 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']]); ?>