zoukankan      html  css  js  c++  java
  • 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"],
                    ]);
                //apphelpersUtil::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 yiiwidgets;
      9 
     10 use Yii;
     11 use yiiaseComponent;
     12 use yiiaseErrorHandler;
     13 use yiihelpersArrayHelper;
     14 use yiihelpersHtml;
     15 use yiiaseModel;
     16 use yiiwebJsExpression;
     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 yiihelpersHtml::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}
    {input}
    {hint}
    {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 yiihelpersHtml::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 yiihelpersHtml::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 yiihelpersHtml::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 yiihelpersHtml::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 = [];
  • 相关阅读:
    C# Console.Read()和Console.ReadLine()的区别
    C#获取项目程序及运行路径的方法
    Thread理解
    ENVI 监督分类Max stdev from Mean 参数IDL中的设置
    C# 插件开发学习实例
    利用动软代码器自动生存三层架构
    结构体的对齐
    链表分类及应用
    指针
    双向循环链表
  • 原文地址:https://www.cnblogs.com/xp796/p/5783566.html
Copyright © 2011-2022 走看看