在Yii2中动态添加输入字段

时间:2014-09-17 20:16:44

标签: javascript php yii2

我在Yii2中遇到了一些问题。我需要创建一个包含三个下拉菜单的表单,该菜单询问用户一周中哪些时间最适合他或她。第一个菜单是一周中的几天,接下来的两个菜单是开始和结束时间。

但我的项目比这更雄心勃勃。我还需要允许用户指定任何时间配置,因此必须扩展表单并使其动态化,允许用户向表单添加更多下拉菜单以指定更多次。

我尝试了很多解决方案,但麻烦似乎在于拥有用户创建的输入字段。我相信在Yii 1中有一种方法可以做到这一点,但Yii 2显然是这样的代码检修,旧的解决方法很少有用。我已经调查了许多扩展,特别是Krajee的扩展,尽管其中许多扩展非常漂亮且用户友好,但它们并不提供动态字段创建。我自己尝试了一些黑客,但没有任何工作,我想知道是否有办法在Yii 2中创建一个具有动态输入字段数量的表单。如果没有,我和#39;我很想在Yii之外写一些简单的Javascript和Php来完成工作,但是我想留在框架内。

3 个答案:

答案 0 :(得分:1)

它看起来并不复杂......

那里有很多解决方案,你可能会发现很多例子......

请参阅我为您找到的这些示例。

请参阅此完全有效的示例,其中您可以使用多个地址,并且可以更改这些字段以匹配您需要的字段。

http://wbraganca.com/yii2extensions/dynamicform-demo1/create

https://github.com/wbraganca/yii2-dynamicform

exmaple dynamic field creation with yii2

答案 1 :(得分:0)

使用复杂表单时,可能会动态地将字段添加到表单中(或从表单中删除)。新添加的字段也需要进行验证。

https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/187演示了一个必须解决验证动态字段问题的示例场景。

答案 2 :(得分:0)

如果有人在2019年在这里,请看看 Yii2 documentation - Here

$('#contact-form').yiiActiveForm('add', {
    id: 'address',
    name: 'address',
    container: '.field-address',
    input: '#address',
    error: '.help-block',
    validate:  function (attribute, value, messages, deferred, $form) {
        yii.validation.required(value, messages, {message: "Validation Message Here"});
    }
});

要为这些字段启用客户端验证,必须将它们注册到ActiveForm JavaScript插件