我正在尝试为Db_norecordExists验证器使用“exclude”选项,因为当我“编辑”该元素时,它总是像往常一样返回“重复”错误.
我的目的是告诉表单保留从Controller传递给表单本身的值…
这是控制器:
public function editaction() { $id = $this->getRequest()->getParam('id'); $pagesMapper = new Application_Model_PagesMapper(); $form = new Application_Form_PageEdit(); $form->populate($pagesMapper->fetchId($id,true)); if ($this->getRequest()->isPost()) { if ($form->isValid($this->getRequest()->getPost())) { //... cut ... } } $this->view->form = $form; }
这是表格:
class Application_Form_PageEdit extends Zend_Form { public function init() { $commonFilters = array('StringTrim'); $commonValidators = array('NotEmpty'); $this->setMethod('post')->setAction('/admin-page/edit'); $id = new Zend_Form_Element_Hidden('id'); $pid = new Zend_Form_Element_Hidden('pid'); $keyname = new Zend_Form_Element_Text('keyname'); $keyname->setLabel('Keyname') ->setrequired(true) ->addFilters($commonFilters) ->addFilter('StringToLower') ->addFilter('Word_SeparatorToDash') ->addValidator('Db_norecordExists',false,array( 'table' => 'pages','field' => 'keyname','exclude' => array( 'field' => 'id','value' => $this->getValue('id) ) ) );
// …切…
一些建议?
我有类似的问题.我的解决方案是将验证器从init移动到isValid函数.
public function isValid($data) { $this->getElement('keyname') ->addValidator( 'Db_norecordExists',array( 'table' => 'pages','exclude' => array( 'field' => 'id','value' => $this->getValue('id') ) ) ); return parent::isValid($data); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。