旗下导航:搜·么
当前位置:网站首页 > PHP教程 > 正文

yii2的ActiveForm表单运用的要领引见【php教程】

作者:搜搜PHP网发布时间:2019-11-26分类:PHP教程浏览:101


导读:本篇文章给人人带来的内容是关于yii2的ActiveForm表单运用的要领引见,有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。因现在项目并不是前后端星散...
本篇文章给人人带来的内容是关于yii2的ActiveForm表单运用的要领引见,有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。

因现在项目并不是前后端星散形式,且用到PHP的yii2框架(一切html代码,js较多内嵌在.php文件内若干采纳同步提交【喷墨中...】),遂关于前端面上须要用到的yii2小组件一些整顿(因是前端若涉及到php写法毛病或许作风题目,敬请指导)

运用场景只管为表单

基础注册挪用小组件

<?php
  use yii\helpers\Html;
  use yii\widgets\ActiveForm;
?>

  //起首注册activeForm小部件,并赋值给$form(php中的声明变量要领用$ 等价于js中的var let)
  //begin 标志小部件最先
  <?php $form = ActiveForm::begin([
      'id' => 'login-form', //声明小部件的id 即form的id
     //声明须要增加的属性 ,比方class , data-x等
      'options' => ['class' => 'form-horizontal'],
  ]) ?>

    //注册完小部件后能够在 activeForm小部件声明块中挪用小部件的要领
      <?= $form->field($model, 'password')->passwordInput() ?>

//::end标识小部件完毕
<?php ActiveForm::end() ?>

1、起首就列出activeForm的一些基础要领:

  自定义input框:input();

  文本框:textInput();

  暗码框:passwordInput();

  单选框:radio(),radioList();

  复选框:checkbox(),checkboxList();

  下拉框:dropDownList();

  多选列表:listBox();

  隐蔽域:hiddenInput();

  文本域:textarea(['rows'=>3]);

  文件上传:fileInput();

widget扩大 <?= $form->field($model, 'username')->widget(\yii\widgets\MaskedInput::className(), ['mask' => '9999/99/99',]); ?>

2、下面我就一一形貌下各个要领的基础挪用以及怎样自定义所需(上述各要领中input之前均是形貌的是input标签的范例)

2.1 input 文本框/暗码框以及各指定范例框

<?php $form=ActiveForm::begin(['id'=>'login','class'=>'login'])?>
    <!-- 浅易用法 运用activeForm 的 fiedld要领  -->
    <!-- 个中 该要领下有 
        textInout/passwordInput 等一些经常使用input范例要领
        hint 输入前的提醒内容
        error 毛病内容 //平常由背景生成
        label 能够变动label内的内容
        在hint,error,label设置class后将会重置了 这些要领内本来属于容器上的class若须要能够原样赋归去
    -->
    <!-- 这里的
        $mode为跟字段有关的数据模子 ,
        第二个参数为关联模子中的字段不存在将报错,
        第三个参数为模板内的一些内容的举行自定义
    -->
    <?= $form->field($model, 'username',[
        'options'=>[],//数组内里能够设置自需属性
        // template 为字符串模板可自定义模板 ,
        // 个中 {label} {input} {hint} {error} 存在是会挪用对应封装好的html模板 固然你也能够不写如许就不会生成yii2内置小部件模板
        'template' => '{label} {input} {hint} {error}',
        // 以下三个离别能够设置label ,input ,hint,error的属性(都是选填项)
        // 个中假如背面有运用->input...,label(...)等将会将这些内里的设置兼并值对应的xxxOptions 内
        'labelOptions' => [
            'class'=>'须要在label上增加的类名'
            //....其他属性集
        ],
        'inputOptions' => [],
        'hintOptions' => [],
        'errorOptions' => [],
    ])->textInput([
        // 在options数组内能够设置恣意属性
        'class'=>'testClass',
        'value'=>'测试'
    ])->hint(
        // 设置提醒内容,当只要一个参数切为false(boolean)用于显现提醒的标签
        'Please enter your name',
        [
            // 设置恣意属性
            'class' => 'testHint'
    ])->label(
        // 设置label显现内容,当只要一个参数切为false(boolean)label标签将不会被衬着
        'Name',
        [
            // 设置恣意属性
            'class' =>'testLabel'
    ])->error([
        // 恣意属性,当只要一个参数切为false(boolean)用于显现毛病的标签
        'class'=>'errors'
    ]) ?>

    <!-- 可自定义范例input 这里只形貌了input的参数  其他参数参考上个示例 -->
    <?= $form->field($model, 'username')->input(
        // input内只允许安排两个参数即[type ,options]
        'email',//该处为指定type="xxxx"的input范例
        ['class'=>'tests','value'=>'值']//可在内部定义任何属性
    ) ?>
                       
<?php ActiveForm::end();?>

2.2 radio 单选框系列

<?php $form=ActiveForm::begin(['id'=>'login','class'=>'login'])?>

    <!-- 
        忠实说对这个radio要领相称疑惑  一个单选按钮挑选而且一旦挑选没法作废,没法一次柑桔属性安排多个值 在有radioList要领的前提下以为相称鸡肋
        第二个参数中false为是不是开启label标签若没开启 labelOption 将无效  ,label设置的值直接显现在容器内
     -->
    <?= $form->field($model, 'username')->radio([
        // 隐蔽域中的值
        'uncheck' =>'test1',
        // 定义lebal的内容
        'label' =>'test',
        // label上的恣意属性
        'labelOptions'=>[
            'gs'=>'test'
        ]
    ],false)?>

    <!-- 
        单选框组 

        若要设置默许值,则在对应控制器中将指定字段设置为 须要挑选的值
        $model->username = 1;
    -->

    <?= $form->field($model, 'username')->radioList([
        '0'=>'a',
        '1'=>'b',
        '2'=>'c'
    ],[
        // tag声转变 class="radio"的父级标签 若tag设置为h3 
        //    则 <div id="loginform-username" key="testKey" role="radiogroup" aria-required="true"> 
        //    => 转为 <h3 id="loginform-username" key="testKey" role="radiogroup" aria-required="true">
        // <div class="form-group field-loginform-username required">
        //     <label class="control-label">Username</label>
        //     <input type="hidden" name="LoginForm[username]" value="">
        //     <div id="loginform-username" key="testKey" role="radiogroup" aria-required="true">
        //         <div class="radio"><label><input type="radio" name="LoginForm[username]" value="0"> a</label></div>
        //         <div class="radio"><label><input type="radio" name="LoginForm[username]" value="1"> b</label></div>
        //         <div class="radio"><label><input type="radio" name="LoginForm[username]" value="2"> c</label></div>
        //     </div>

        //     <p class="help-block help-block-error"></p>
        // </div>
        'tag'=>'h3',
        // 未挑选是默许提交的值
        'unselect'=>'1',
        // 假如设置了item选项,则疏忽此选项
        'encode'=>false,
        // 每一个单选块之间的内容 写的是什么字符串输出就什么字符串
        'separator'=>'',
        // 定义在每一个input单选按钮上的属性
        'itemOptions'=>[
            'tess'=>'jzq'
        ],
      //可挪用的回调,可用于自定义与$Item中单个项对应的HTML代码的生成。此回调的署名必需是:函数($index、$Label、$name、$check、$value),
      //个中$index是全部列表中单选按钮的基于零的索引;$Label是单选按钮的标签;$name、$value和$check示意单选按钮输入的称号、值和选中状况。
        'item'=>function($index, $label, $name, $checked, $value){
            // 这块跟encode是鄙人才疏学浅临时还未邃晓啥子用途,待弄邃晓后在补上,若有码友晓得这块细致作用用法,愿望不吝赐教,感谢感动
            // echo $index, $label, $name, $checked, $value;
        },
        // 除此yii2有划定属性以外还可自定义恣意属性  且上述属性均不是必填
    ])?>

2.3 checkbox多选框系列

<?php $form=ActiveForm::begin(['id'=>'login','class'=>'login'])?>

    <!-- 
        checbox要领
        该要领与radio 要领近似就不多说了 直接撸代码 细致可参考 radio
     -->
    <?= $form->field($model, 'username')->checkbox([
        // 隐蔽域中的值
        'uncheck' =>'test1',
        // 定义lebal的内容
        'label' =>'test',
        // label上的恣意属性
        'labelOptions'=>[
            'gs'=>'test'
        ]
    ],true)?>

    <!-- 
        checkboxList要领
        多选框
     -->
     <?= $form->field($model, 'username')->checkboxList([
        '1'=>'篮球',
        '2'=>'足球',
        '3'=>'游戏',
        '4'=>'念书'
    ],[
         // tag声转变 class="radio"的父级标签 若tag设置为h3 
        //    则 <div id="loginform-username" key="testKey" role="radiogroup" aria-required="true"> 
        //    => 转为 <h3 id="loginform-username" key="testKey" role="radiogroup" aria-required="true">
        // <div class="form-group field-loginform-username required">
        //     <label class="control-label">Username</label>
        //     <input type="hidden" name="LoginForm[username]" value="">
        //     <div id="loginform-username" key="testKey" role="radiogroup" aria-required="true">
        //         <div class="radio"><label><input type="radio" name="LoginForm[username]" value="0"> a</label></div>
        //         <div class="radio"><label><input type="radio" name="LoginForm[username]" value="1"> b</label></div>
        //         <div class="radio"><label><input type="radio" name="LoginForm[username]" value="2"> c</label></div>
        //     </div>

        //     <p class="help-block help-block-error"></p>
        // </div>
        'tag'=>'h3',
        // 未挑选是默许提交的值
        'unselect'=>'1',
        // 假如设置了item选项,则疏忽此选项
        'encode'=>false,
        // 每一个单选块之间的内容 写的是什么字符串输出就什么字符串,发起如无特殊情况 请无视该字段
        // 'separator'=>',',
        // 定义在每一个input单选按钮上的属性
        'itemOptions'=>[
            'tess'=>'jzq'
        ],
        // 用于替代html指向函数后若不做操纵将会输出空
        // 'item'=>function($index, $label, $name, $checked, $value){
            // 这块跟encode是鄙人才疏学浅临时还未邃晓啥子用途,待弄邃晓后在补上,若有码友晓得这块细致作用用法,愿望不吝赐教,感谢感动
            // echo $index, $label, $name, $checked, $value;
        // },
        // 除此yii2有划定属性以外还可自定义恣意属性  且上述属性均不是必填
    ])?>

                       
<?php ActiveForm::end();?>

2.4 select下拉列表系列

<?php $form=ActiveForm::begin(['id'=>'login','class'=>'login'])?>

    <!-- 
        dropDownList要领
        下拉列表
     -->
     <?= $form->field($model, 'username')->dropDownList([
        //  二维数组直接回报上组标签
        'test'=>[
            '1'=>'篮球',
            '2'=>'足球',
        ],
        '3'=>'游戏',
        '4'=>'念书'
    ],[
        // 设置下拉列表的默许请挑选选项
        'prompt'=>[
            'text' => '请挑选', 
            'options' => ['value' => 'none', 'class' => 'prompt', 'label' => 'Select']
        ],
        'encode'=>false,
        // 对select option的设置前提以及变动内容
        'options'=>[
            // 设置制止挑选项
            '2' => ['disabled' => true],
            //替代或许追加指定key的内容,现实上原内容还在只是假设了 label 属性 和显现了 label的属性值
            '4' => ['label' => 'value 2'],
        ],
        'encodeSpaces'=>true
        // 除此yii2有划定属性以外还可自定义恣意属性  且上述属性均不是必填
    ])?>

    

        
                       
<?php ActiveForm::end();?>

2.5 widget 小部件

<?php $form=ActiveForm::begin(['id'=>'login','class'=>'login'])?>

    <!-- 
        小部件
        用于强迫输入准确内容的input部件
     -->
    <?= $form->field($model, 'username',[
        'template'=>'<h2>test</h2> {label} {input} {error}'
    ])->widget(\yii\widgets\MaskedInput::className(), [
        // 指定input范例
        // 'type'=>'time',
        // 指定必需输入的范例
        'mask' => '999-9999-9999',
        'options'=>['class' => 'form-control test']
    ]); ?>

    <!-- 
        用于生成带图片考证的input小部件
        -->
    <?= $form->field($model, 'verifyCode')->widget(Captcha::className(), [
        'captchaAction' => 'login/captcha',
        'options' => [
            'class' => 'two',
            'id'=>'two',
            'placeholder' => '请输入考证码',
        ],
        'template' => '{input}{image}',
        'imageOptions' => [
            'alt' => 'images',
        ]
    ])?>

  --------------------- 末了一个并未实测   -------------------------------
<!-- 自定义小部件 需在widget文件定义源文件 --> <?= $form->field($model, 'username')->widget('WidgetClassName', [ // configure additional widget properties here ]) ?> <?php ActiveForm::end();?>

以上是这段时候运用的一篇小总结 若有用法毛病敬请指导

以上就是yii2的ActiveForm表单运用的要领引见的细致内容,更多请关注ki4网别的相干文章!

标签:yii2