我的一个表格有一些必填字段,而有些则没有,可以说“姓名”是必需的,但“注释”不是:
class Form_CompanyForm extends Zend_Form{
public function init(){
// add element: ID textbox
$ID = $this->createElement('hidden', 'id');
$this->addElement($ID);
// add element: name textbox
$name = $this->createElement('text', 'name');
$name->setLabel('name:');
**$name->setRequired(TRUE);**
$name->setAttrib('size',100);
$name->setAttrib('maxlength',255);
$name->addFilters(array(new Zend_Filter_StringTrim()));
$this->addElement($name);
// add element: note text area
$note = $this->createElement('textarea', 'note');
$note->setLabel('note:');
**$note->setRequired(FALSE);**
$note->setAttrib('cols',50);
$note->setAttrib('rows',4);
$note->addFilters(array(new Zend_Filter_StringTrim()));
$this->addElement($note);
...
我的一个控制器调用此表单并使用其所有字段。这工作正常,并且名称字段的验证发生。
但是...另一个控制器使用相同的表单,只是为了更改注释...为此,我使用 removeElement() 从表单中删除名称:
public function editcompanynoteAction(){
$mod = new Model_Company();
$frm = new Form_CompanyForm();
$frm->removeElement('name');
$frm->setAction('/companyland/editcompany');
$frm->setMethod('post');
if($this->getRequest()->isPost()){
if($frm->isValid($_POST)){
...
表单正确显示,只存在注释字段,如预期的那样
但是在保存表单后,验证失败,因为需要“名称”字段......
我是 Zend 的新手,我不明白为什么表单验证会失败......在一个被删除的元素上。
网上有关于使用 removeElement 的示例...我尝试了 clearValidators() 没有成功,并查看了Zend 表单验证
评论说“您应该在调用 $form->isValid() 之前删除验证器。”
但是怎么做?
您能给我的任何帮助将不胜感激。