使用Zend Form创建动态输入名称

时间:2015-03-13 13:26:28

标签: php forms zend-framework zend-form

我想让Zend_Form_Element_Text动态化,即它会接受不同的输入名称。

我有这个:

 $email = new Zend_Form_Element_Text('email');

它使用'电子邮件'创建输入。作为名称:

 <input name="email" id="email" size="20" maxlength="100" placeholder="Email" class="input" type="text">

但有时我收到一些外部POST请求,他们的输入名称字段也不同,如下所示:

 <input name="login_Email" id="email" size="20" maxlength="100" placeholder="Email" class="input" type="text">

你能指导我怎么做吗?

1 个答案:

答案 0 :(得分:1)

在你的控制器中,我猜你有这样的东西来获取POST变量:

if ($this->getRequest()->isPost()) {
    $formData = $this->getRequest()->getPost();

    if ($form->isValid($formData)) {
    ....

所以你可以测试每个POST变量,如果它匹配的比'email'而不等于'email',你可以创建一个新的电子邮件变量POST

if ($this->getRequest()->isPost()) {
    $formData = $this->getRequest()->getPost();

    foreach($formData as $name => $value){      
        if ($name != 'email' && preg_match("/email/i", $name))
            $formData['email'] = $value;
    }
    if ($form->isValid($formData)) {
    ...