• Yii2 表单(form)


    表单

    1、表单的创建

    • 在 yii 中主要通过 yiiwidgetsActiveForm 类来创建表单
    • ActiveForm::begin() 不仅创建了一个表单实例,同时也标志着表单的开始
    • 放在 ActiveForm::begin() 和 ActiveForm::end()之间的所有内容都被包裹在 html 的 from 标签中
    • 中间是通过调用 ActiveForm::field() 方法来创建一个 ActiveForm 实例,这个实例会创建表单元素与元素的标签以及对应的 js 验证
    • ActiveField 有一个对应的模型和属性, input 输入框的 name 属性会自动的根据属性名来创建,同时,还会用属性的验证规则来验证用户输入的数据

    e.g.

       <?= $form->field($model,'name')->textInput(['autofocus' => true]) ?>
    解析后的标签为:

      
    还会自动添加 js 验证,代码如下:

    jQuery('#contactform-name').yiiActiveForm([{
    
      "id" : "contactform-name",
    
      "name" : "name",
    
      "container" : ".field-contactform-name",
    
      "input" : "#contactform-name",
    
      "error" : ".help-block.help-block-error",
    
      "validate" : function(attribute,value,messages,deferred,$form){
    
      yii.validation.required(value,messages,{
    
        "messages" : "Name 不能为空",
    
      });
    }])

    2、ActiveField 对象的使用(参考类参考手册 yiiwidgetsActiveField 中的 methods)

    • <?= $form->field($model,'password') -> passwordInput() ?>   <!--密码输入框-->
    • <?= $form->field($model,'username') -> textInput() -> hint('Please enter your name')->label('Name') ?>   <!--输入框增加了一个提示标签-->
    • <?= $form->field($model,'email') -> input('email') ?>   <!--创建一个 html5 的邮箱输入框-->
    • <?= $form -> field($model,'name')->label('姓名') ?>   <!-- 自定义输入框的显示标签名 -->

    3、额外标签的处理,即与模型对象没有关系的额外 HTML 标签(e.g. submit,button, p 等 )

    使用 yiihelpersHtml 帮助类中的方法来添加到表单中

    e.g. 纯文本

      

    Html 帮助类

      <?= Html::tag('p',Html::encode($user->name),['class'=>'username']) ?>

    4、块儿赋值

    •  input 中的 name ,实际是以对象名来命名的一个数组,数组的键对应模型的属性 (e.g. name="ContactForm[name]")
    •  model 执行 load() 方法,就是对每个属性执行这样一句赋值:$model -> name = isset($ContactForm['name']) ? $ContactForm[name] : null;
    • 块赋值就是用这一句代码将用户所有的输入数据填充到模型中去

    5、dropDownList 的用法:

    ['options' => [$needSelected => ['selected' => 'selected']],['prompt'=>'请选择状态']) ?>

    $allStatus 是一个 [1=>'已发布'] 形式的关联数组

    $needSelected 为需要默认选中的值,其值满足 $allStatus 中 key 值中的一个

    Yii2中各种文本框的使用 

    文本框:textInput();
    密码框:passwordInput();
    单选框:radio(),radioList();
    复选框:checkbox(),checkboxList();
    下拉框:dropDownList();
    隐藏域:hiddenInput();
    文本域:textarea(['rows'=>3]);
    文件上传:fileInput();
    提交按钮:submitButton();
    重置按钮:resetButtun();

    <?php
    $form = ActiveForm::begin(['action' => ['test/getpost'],'method'=>'post',]); ?>
     
    <? echo $form->field($model, 'username')->textInput(['maxlength' => 20]) ?>
    
    <? echo $form->field($model, 'password')->passwordInput(['maxlength' => 20]) ?>
    
    <? echo $form->field($model, 'sex')->radioList(['1'=>'男','0'=>'女']) ?>
    
    <? echo $form->field($model, 'edu')->dropDownList(['1'=>'大学','2'=>'高中','3'=>'初中'], ['prompt'=>'请选择','style'=>'120px']) ?>
    
    <? echo $form->field($model, 'file')->fileInput() ?>
    
    <? echo $form->field($model, 'hobby')->checkboxList(['0'=>'篮球','1'=>'足球','2'=>'羽毛球','3'=>'乒乓球']) ?>
    
    <? echo $form->field($model, 'info')->textarea(['rows'=>3]) ?>
    
    <? echo $form->field($model, 'userid')->hiddenInput(['value'=>3]) ?>
    
    <? echo Html::submitButton('提交', ['class'=>'btn btn-primary','name' =>'submit-button']) ?>
       
    <? echo Html::resetButton('重置', ['class'=>'btn btn-primary','name' =>'submit-button']) ?>
    
    <?php ActiveForm::end(); ?>
  • 相关阅读:
    PyMySQL TypeError: not enough arguments for format string
    使用python3抓取pinpoint应用信息入库
    JS 异步之 async await
    JS Null 空 判断
    Vue问题汇总
    pymysql DAO简单封装
    py可视化执行过程
    jenkins回滚之groovy动态获取版本号
    容器时间 容器乱码问题
    SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase, Hana]
  • 原文地址:https://www.cnblogs.com/wuheng1991/p/9522448.html
Copyright © 2020-2023  润新知