yii2 formwizard 复选框字段和自定义预览步骤
yii2 formwizard checkbox field and customize preview step
我正在使用 yii2-formwizard,我想在表格步骤中插入一个复选框作为字段 is_legal
的表单输入字段。
所以在 fieldConfig
数组中,阅读文档,我插入了以下代码:
'is_legal' => [
'options' => [
'type' => 'checkbox',
],
'labelOptions' => [
'label' => \Yii::t('app', 'Legal Representative'),
],
],
下图显示结果:
但是,当我进入预览步骤时,我看到复选框的字段设置为未定义:
事实上,当我尝试保存模型时,is_legal
字段没有设置。
第一个问题:checkbox表单域的问题出在哪里?
第二个问题:请问有什么方法可以自定义预览步骤吗?例如,我想写 'Legal Data' 而不是 'Step 5'。
我创建了这个小部件,您需要了解一些事情。
第一个回答
它显示的 undefined
不是 value
,而是复选框的 label
,如果您查看 getLabel()
中的函数formwizard.js
文件,它在 input
字段的兄弟项中查找 label
并获取其文本
let text = $('#' + fieldName).siblings('label').text();
在预览步骤显示,默认情况下 Yii2 将输入包装在 label
内,如
<label><input stype="checkbox"></label>
因此您需要使用复选框的 template
选项,如下所示
'is_legal' => [
'options' => [
'type' => 'checkbox',
'template' => '{input}{beginLabel}{labelTitle}{endLabel}{error}{hint}',
],
'labelOptions' => [
'label' => \Yii::t('app', 'Legal Representative'),
],
],
第二个答案
- 不,目前该小部件不支持预览步骤部分的自定义标题,但我想我可以添加对提供标题标题的支持,因为这也很有意义,如果这能解决您的问题。
更新
忽略上面给出的第二个答案我只是将更新推送到实时分支你现在可以在步骤设置中使用previewHeading
选项。通过 运行 composer update
更新您的作曲家以更新到最新版本并使用 CTRL+F5.[= 清除缓存27=]
请参阅以下示例代码如何使用 previewHeading
选项
use buttflattery\formwizard\FormWizard;
echo FormWizard::widget([
'enablePreview'=>true,
'steps'=>[
[
'model'=>$user,
'title'=>'My Shoots',
'previewHeading'=>'My Heading Step 1',
'description'=>'Add your shoots',
'formInfoText'=>'Fill all fields'
],
[
'model'=> $profile,
'title'=>'My Shoots',
'previewHeading'=>'My Heading Step 2',
'description'=>'Add your shoots',
'formInfoText'=>'Fill all fields'
],
]
]);
我正在使用 yii2-formwizard,我想在表格步骤中插入一个复选框作为字段 is_legal
的表单输入字段。
所以在 fieldConfig
数组中,阅读文档,我插入了以下代码:
'is_legal' => [
'options' => [
'type' => 'checkbox',
],
'labelOptions' => [
'label' => \Yii::t('app', 'Legal Representative'),
],
],
下图显示结果:
但是,当我进入预览步骤时,我看到复选框的字段设置为未定义:
事实上,当我尝试保存模型时,is_legal
字段没有设置。
第一个问题:checkbox表单域的问题出在哪里?
第二个问题:请问有什么方法可以自定义预览步骤吗?例如,我想写 'Legal Data' 而不是 'Step 5'。
我创建了这个小部件,您需要了解一些事情。
第一个回答
它显示的
undefined
不是value
,而是复选框的label
,如果您查看getLabel()
中的函数formwizard.js
文件,它在input
字段的兄弟项中查找label
并获取其文本let text = $('#' + fieldName).siblings('label').text();
在预览步骤显示,默认情况下 Yii2 将输入包装在
label
内,如<label><input stype="checkbox"></label>
因此您需要使用复选框的
template
选项,如下所示'is_legal' => [ 'options' => [ 'type' => 'checkbox', 'template' => '{input}{beginLabel}{labelTitle}{endLabel}{error}{hint}', ], 'labelOptions' => [ 'label' => \Yii::t('app', 'Legal Representative'), ], ],
第二个答案
- 不,目前该小部件不支持预览步骤部分的自定义标题,但我想我可以添加对提供标题标题的支持,因为这也很有意义,如果这能解决您的问题。
更新
忽略上面给出的第二个答案我只是将更新推送到实时分支你现在可以在步骤设置中使用previewHeading
选项。通过 运行 composer update
更新您的作曲家以更新到最新版本并使用 CTRL+F5.[= 清除缓存27=]
请参阅以下示例代码如何使用 previewHeading
选项
use buttflattery\formwizard\FormWizard;
echo FormWizard::widget([
'enablePreview'=>true,
'steps'=>[
[
'model'=>$user,
'title'=>'My Shoots',
'previewHeading'=>'My Heading Step 1',
'description'=>'Add your shoots',
'formInfoText'=>'Fill all fields'
],
[
'model'=> $profile,
'title'=>'My Shoots',
'previewHeading'=>'My Heading Step 2',
'description'=>'Add your shoots',
'formInfoText'=>'Fill all fields'
],
]
]);