Yii2 ActiveForm表单自定义样式

实例:

 <?php

            $form = ActiveForm::begin([
                 'fieldConfig' => [
                    'template' => '<div class="col-lg-3 control-label color666 fontweight">{label}:</div>
                                                    <div class="col-lg-5" style="padding-left: 15px;padding-right: 15px;">{input}</div>
                                                    <div class="col-lg-4">{error}</div>',
                    'inputOptions' => ['class' => 'form-control'],
                ],
                'options' => ['class' => 'form-horizontal t-margin20','id'=>'form1','enctype'=>"multipart/form-data"],
                ]);
            //\app\helpers\Util::dump($form);
/*打印此处$form   ActiveForm::begin([]) 追踪源码,调用父级的widget的begin方法是实例化ActiveForm  This method creates an instance of the calling class
*/
?>
/*
自定义样式
$form->field() 
调用该方法 查看源码 注释写的 options配置是 ActiveField These are properties of [[ActiveField]] 查看 ActiveField  的属性 就知道可以修改哪些样式 
/**
     * Generates a form field.
     * A form field is associated with a model and an attribute. It contains a label, an input and an error message
     * and use them to interact with end users to collect their inputs for the attribute.
     * @param Model $model the data model
     * @param string $attribute the attribute name or expression. See [[Html::getAttributeName()]] for the format
     * about attribute expression.
     * @param array $options the additional configurations for the field object. These are properties of [[ActiveField]]
     * or a subclass, depending on the value of [[fieldClass]].
     * @return ActiveField the created ActiveField object
     * @see fieldConfig
     */
    public function field($model, $attribute, $options = [])
    {
        $config = $this->fieldConfig;
        if ($config instanceof \Closure) {
            $config = call_user_func($config, $model, $attribute);
        }
        if (!isset($config['class'])) {
            $config['class'] = $this->fieldClass;
        }
        return Yii::createObject(ArrayHelper::merge($config, $options, [
            'model' => $model,
            'attribute' => $attribute,
            'form' => $this,
        ]));
    }
*/

<?=$form->field($model, 'product_name',['labelOptions' => ['class' => 't-r-pd5'],'options'=>['class'=>'']])->textInput()?>
ActiveField 部分代码:
  1 <?php
  2 /**
  3  * @link http://www.yiiframework.com/
  4  * @copyright Copyright (c) 2008 Yii Software LLC
  5  * @license http://www.yiiframework.com/license/
  6  */
  7 
  8 namespace yii\widgets;
  9 
 10 use Yii;
 11 use yii\base\Component;
 12 use yii\base\ErrorHandler;
 13 use yii\helpers\ArrayHelper;
 14 use yii\helpers\Html;
 15 use yii\base\Model;
 16 use yii\web\JsExpression;
 17 
 18 /**
 19  * ActiveField represents a form input field within an [[ActiveForm]].
 20  *
 21  * @author Qiang Xue <qiang.xue@gmail.com>
 22  * @since 2.0
 23  */
 24 class ActiveField extends Component
 25 {
 26     /**
 27      * @var ActiveForm the form that this field is associated with.
 28      */
 29     public $form;
 30     /**
 31      * @var Model the data model that this field is associated with
 32      */
 33     public $model;
 34     /**
 35      * @var string the model attribute that this field is associated with
 36      */
 37     public $attribute;
 38     /**
 39      * @var array the HTML attributes (name-value pairs) for the field container tag.
 40      * The values will be HTML-encoded using [[Html::encode()]].
 41      * If a value is null, the corresponding attribute will not be rendered.
 42      * The following special options are recognized:
 43      *
 44      * - tag: the tag name of the container element. Defaults to "div".
 45      *
 46      * If you set a custom `id` for the container element, you may need to adjust the [[$selectors]] accordingly.
 47      *
 48      * @see \yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered.
 49      */
 50     public $options = ['class' => 'form-group'];
 51     /**
 52      * @var string the template that is used to arrange the label, the input field, the error message and the hint text.
 53      * The following tokens will be replaced when [[render()]] is called: `{label}`, `{input}`, `{error}` and `{hint}`.
 54      */
 55     public $template = "{label}\n{input}\n{hint}\n{error}";
 56     /**
 57      * @var array the default options for the input tags. The parameter passed to individual input methods
 58      * (e.g. [[textInput()]]) will be merged with this property when rendering the input tag.
 59      *
 60      * If you set a custom `id` for the input element, you may need to adjust the [[$selectors]] accordingly.
 61      *
 62      * @see \yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered.
 63      */
 64     public $inputOptions = ['class' => 'form-control'];
 65     /**
 66      * @var array the default options for the error tags. The parameter passed to [[error()]] will be
 67      * merged with this property when rendering the error tag.
 68      * The following special options are recognized:
 69      *
 70      * - tag: the tag name of the container element. Defaults to "div".
 71      * - encode: whether to encode the error output. Defaults to true.
 72      *
 73      * If you set a custom `id` for the error element, you may need to adjust the [[$selectors]] accordingly.
 74      *
 75      * @see \yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered.
 76      */
 77     public $errorOptions = ['class' => 'help-block'];
 78     /**
 79      * @var array the default options for the label tags. The parameter passed to [[label()]] will be
 80      * merged with this property when rendering the label tag.
 81      * @see \yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered.
 82      */
 83     public $labelOptions = ['class' => 'control-label'];
 84     /**
 85      * @var array the default options for the hint tags. The parameter passed to [[hint()]] will be
 86      * merged with this property when rendering the hint tag.
 87      * The following special options are recognized:
 88      *
 89      * - tag: the tag name of the container element. Defaults to "div".
 90      *
 91      * @see \yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered.
 92      */
 93     public $hintOptions = ['class' => 'hint-block'];
 94     /**
 95      * @var boolean whether to enable client-side data validation.
 96      * If not set, it will take the value of [[ActiveForm::enableClientValidation]].
 97      */
 98     public $enableClientValidation;
 99     /**
100      * @var boolean whether to enable AJAX-based data validation.
101      * If not set, it will take the value of [[ActiveForm::enableAjaxValidation]].
102      */
103     public $enableAjaxValidation;
104     /**
105      * @var boolean whether to perform validation when the value of the input field is changed.
106      * If not set, it will take the value of [[ActiveForm::validateOnChange]].
107      */
108     public $validateOnChange;
109     /**
110      * @var boolean whether to perform validation when the input field loses focus.
111      * If not set, it will take the value of [[ActiveForm::validateOnBlur]].
112      */
113     public $validateOnBlur;
114     /**
115      * @var boolean whether to perform validation while the user is typing in the input field.
116      * If not set, it will take the value of [[ActiveForm::validateOnType]].
117      * @see validationDelay
118      */
119     public $validateOnType;
120     /**
121      * @var integer number of milliseconds that the validation should be delayed when the user types in the field
122      * and [[validateOnType]] is set true.
123      * If not set, it will take the value of [[ActiveForm::validationDelay]].
124      */
125     public $validationDelay;
126     /**
127      * @var array the jQuery selectors for selecting the container, input and error tags.
128      * The array keys should be "container", "input", and/or "error", and the array values
129      * are the corresponding selectors. For example, `['input' => '#my-input']`.
130      *
131      * The container selector is used under the context of the form, while the input and the error
132      * selectors are used under the context of the container.
133      *
134      * You normally do not need to set this property as the default selectors should work well for most cases.
135      */
136     public $selectors = [];
137     /**
138      * @var array different parts of the field (e.g. input, label). This will be used together with
139      * [[template]] to generate the final field HTML code. The keys are the token names in [[template]],
140      * while the values are the corresponding HTML code. Valid tokens include `{input}`, `{label}` and `{error}`.
141      * Note that you normally don't need to access this property directly as
142      * it is maintained by various methods of this class.
143      */
144     public $parts = [];

 

posted @ 2016-08-18 13:12  哦先生  阅读(14324)  评论(0编辑  收藏  举报