0

我需要向 Fieldset 添加额外的字段,以将一定的灵活性集成到我在 Zend Framework 2 中创建的表单中。

我想使用主窗体中的方法来实现这一点。

将输入字段附加到字段集没有问题,但问题从输入验证和过滤开始。在将字段集添加到表单并解析 getInputFilterSpecification 部分后,我不知道如何为字段集实现过滤器。

这是我目前的方法,遗憾的是它不起作用:

public function addAdditionalField($data, $filterData = null) {
    $fieldset = $this->get('additional');
    $fieldset->addElement($data);

    if ($filterData !== null) {
        $factory = new InputFactory();
        $filter = $this->getInputFilter();

        var_dump($filter->add($factory->createInputFilter(array('additional' => $filterData))));
    }
}

关于这个问题的任何想法?

4

1 回答 1

0

对于我使用的非常相似的任务和配置数组。此示例来自登录表单:

src/Module/Form/LoginForm.php

if($this->moduleSettings['enablCaptchaOnLogin'] === TRUE)
{
   $captcha = new Element\Captcha('captcha');
   $captchaAdapter = new Captcha\Dumb();
   $captchaAdapter->setWordlen(7);
   $captcha->setCaptcha($captchaAdapter)
           ->setAttribute('title', 'Help to prevent SPAM');
   $this->add($captcha);
}

在/Module/view/module/login/index.phtml中我使用了has()函数:

if ($form->has('captcha'))
    echo $this->formRow($form->get('captcha')) . PHP_EOL ;

我希望这将有所帮助。检查http://framework.zend.com/apidoc/2.2/classes/Zend.Form.Form.html

于 2013-07-29T11:59:05.777 回答