首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jQuery和Zend_Form动态添加表单元素

使用jQuery和Zend_Form动态添加表单元素
EN

Stack Overflow用户
提问于 2012-01-06 13:50:09
回答 1查看 3K关注 0票数 2

我有一种形式,人们可以用加法按钮添加相同部分的元素,这样就产生了这样的东西:

代码语言:javascript
复制
<div id="person-1" class="person">
    <input type="text" name="name-1" id="name-1" />
    <input type="text" name="age-1" id="age-1" />
</div>
<!-- as of here, it's JS created -->
<div id="person-2" class="person">
    <input type="text" name="name-2" id="name-2" />
    <input type="text" name="age-2" id="age-2" />
</div>
<div id="person-3" class="person">
    <input type="text" name="name-3" id="name-3" />
    <input type="text" name="age-3" id="age-3" />
</div>

我已经成功地编写了jquery-代码,允许我使用新id (名称-1、年龄-1、名称-2、年龄-2、名称-3、年龄-3、…)再次添加相同的元素。。

当然,Zend_Form不知道名称-2name-3,所以当表单包含错误并再次显示时,它就会删除它们。我也不能用访问$form->getValue('name-2')名称-2的值。我要检查一下原始的$this->getRequest()->getPost()

是否有更好的方法来组合Zend_Form和基于javascript的已添加表单元素(与硬编码元素的类型相同)。

警告:真正的问题是select而不是input。发现这可能会产生不同的效果(使用->setIsArray(true)),但是使用select会破坏示例代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-06 18:23:13

您可以做的是在主窗体中创建一个子表单容器,并向该容器中添加X个子表单。例如:

代码语言:javascript
复制
class My_Form extends Zend_Form
{
    private $_numPersons = 1;

    public function setNumPersons($numPersons)
    {
        $this->_numPersons = (int) $numPersons;
    }


    public function init()
    {
        $container = new Zend_Form_SubForm();
        $this->addSubForm($container, 'persons');

        for($index = 0; $index < $this->_numPersons; $index++) {
            $personForm = new My_PersonForm();
            $container->addSubForm($personForm, $index+1);
        }
    }
}

当呈现时,输入字段将具有类似于persons[1][name]的名称。注意,$index+1,Zend_Form不允许将表单命名为'0‘。

当然,只有当人子表单的数量有限时,才应该使用此方法。

另一种策略是重写isValid方法,并使用单个My_PersonForm表单来验证所有person数据。

Sidenote;上面的代码只有在创建表单实例时将numPersons定义为选项集的一部分时才有效。例如;

$form = new My_Form(array('numPersons' => 10));

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8758819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档