重复使用带有验证码的 Zend 2 表单进行编辑

Reuse Zend 2 form with captcha for editing

我有一个用于使用验证码创建元素的表单。 它工作正常。

但是我也想在管理页面使用这个表单,应该没有验证码。 当我尝试提交表单时出现错误

["captcha"] => array(1) {
  ["isEmpty"] => string(36) "Value is required and can't be empty"
}

如何在没有验证码的情况下重复使用此表单?有没有不扩展另一种新形式的方法?

已解决。

只需创建过滤器

use Zend\InputFilter\Input;
use Zend\InputFilter\InputFilter;

class FreeLessonFilter extends InputFilter
{
public function __construct()
{
    $this->addElements();
}

protected function addElements()
{

    $captcha = new Input('captcha');
    $captcha->setRequired(TRUE);

    $this->add($captcha);

}
}

并且在管理页面控制器中使用它,而不是在索引页面中使用它

    $this->defaultForm = new FreeLessonForm();
    $filter            = new FreeLessonFilter();
    $filter->get('captcha')->setRequired(false);

    $this->defaultForm->setInputFilter($filter);

默认情况下需要,但在管理员中不需要。