Heim > Artikel > Backend-Entwicklung > Einführung in die Methoden zur Verwendung des ActiveForm-Formulars von yii2
Dieser Artikel bietet Ihnen eine Einführung in die Verwendung von ActiveForm-Formularen in yii2. Ich hoffe, dass er Ihnen als Referenz dienen wird.
Da sich das aktuelle Projekt nicht im Front-End- und Back-End-Trennmodus befindet und das yii2-Framework von PHP verwendet (alle HTML-Codes, JS sind größtenteils in .php-Dateien eingebettet, mehr oder weniger synchrone Übermittlung [Inkjet... .】), also habe ich die yii2-Widgets aussortiert, die im Frontend verwendet werden müssen (denn wenn das Frontend PHP-Schreibfehler oder Stilprobleme aufweist, geben Sie mir bitte einen Rat)
Verwenden Sie Szenarien, um Formulare zu sein
Grundlegendes Registrierungsaufruf-Widget
<?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. Listen Sie zunächst einige grundlegende Methoden von activeForm auf:
Benutzerdefiniertes Eingabefeld: input(). ;
Textfeld :textInput();
Optionsfeld: radio(), radioList(); Kontrollkästchen: checkbox(), checkboxList();
Dropdown-Feld: dropDownList();
Mehrfachauswahlliste: listBox();
Verstecktes Feld: hideInput();
Textbereich: textarea(['rows'=>3]);
Datei-Upload: fileInput();
Widget-Erweiterung2f344a32ace7da85628d1feacf48dca8field($model , 'username')->widget(yiiwidgetsMaskedInput::className(), ['mask' => '9999/99/99',]); ?>
2. Im Folgenden beschreibe ich die grundlegenden Aufrufe jeder Methode nacheinander und wie man die erforderlichen Elemente anpasst (die Eingabe vor der Eingabe in jeder der oben genannten Methoden). Methoden beschreiben die Art des Eingabe-Tags)
2.1 Eingabetextfeld/Passwort Feld und jedes angegebene Feldtyp Boxserie auswählen<?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();?>
<?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.5 Widget-Widget
<?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();?>Das Obige ist eine kleine Zusammenfassung dessen, was in diesem Zeitraum verwendet wurde, z. B. Bitte teilen Sie mir mit, ob es Nutzungsfehler gibt
Das obige ist der detaillierte Inhalt vonEinführung in die Methoden zur Verwendung des ActiveForm-Formulars von yii2. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!