我在控制器中添加了代碼以檢查記錄是否已存在。Zend db NoRecordExists具有多個排除選項問題
public function addAction()
{
$form = new Form();
$request = $this->getRequest();
if ($request->isPost()) {
$role = new Role($this->dbAdapter);
$form->setInputFilter($role->getInputFilter());
$form->setData($request->getPost());
// start here for add validator for already exists same data as entered.
$db = $this->getServiceLocator()->get('Zend\Db\Adapter\Adapter');
$validator = new \Zend\Validator\Db\NoRecordExists(
array(
'table' => 'tbl_roles',
'field' => 'vRoleName',
'exclude' => array(
'field' => 'iRoleID',
'value' => $request->getPost('iRoleID') // note 1
),
'adapter' => $db,
'messages' => array(
\Zend\Validator\Db\NoRecordExists::ERROR_RECORD_FOUND => 'This Role is already exist.',
),
)
);
$form->getInputFilter()->get('vRoleName')->getValidatorChain()->addValidator($validator);
// end here for add validator for already exists same data as entered.
if ($form->isValid()) {
$role->exchangeArray($form->getData());
$this->aclRoleTable->saveRole($role);
$this->flashMessenger()->addMessage('Role Added Successfully.');
return $this->redirect()->toRoute('role');
}
}
return array('form' => $form);
}
注1:我要在這裏添加第二個字段排除像eDelete =「1」,所以如果紀錄eDelete =「1」是有那麼也是我可以在數據庫中添加相同的角色名。 或者給我的解決方案,如果與eDelete = 1的記錄是有比沒有表現出Zend的錯誤,我可以把它更新從eDelete = 1 0