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'
        ],
    ]
]);