php – Zend验证Db_NoRecordExists并排除选项
发布时间:2020-12-13 18:25:40 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试为Db_NoRecordExists验证器使用“exclude”选项,因为当我“编辑”该元素时,它总是像往常一样返回“重复”错误. 我的目的是告诉表单保留从Controller传递给表单本身的值… 这是控制器: public function editAction(){$id = $this-getRequest()-get
我正在尝试为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); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |