我正在学习Zend框架,目前我已经为国家名称和大陆名称创建了添加,更新,删除功能,并且它运行良好。 我已经通过
设置了验证$name->setRequired('true');
和
$continent->setRequired('true');
在我的form.php。
验证工作在编辑表单中,但它在添加表单中返回错误“发生错误”和“应用程序错误”。 以下是我的控制器代码:
添加:
/*Add Record into Database*/
public function addAction()
{
$form =new Application_Form_Add();
$form->submit->setlabel('Add Country');
$this->view->form = $form;
if($this->getRequest()->ispost())
{
$formData = $this->getRequest()->getpost();
if($form->isvalid($formData))
{
$file = new Application_Model_Country();
$name = $form->getvalue('name');
$continent = $form->getvalue('continent');
$file->addCountry($name, $continent);
$this->_helper->redirector('index');
}
else
{
$this->populate($formData);
}
}
}
for Edit:
/*Edit Record into Database*/
public function editAction()
{
$form = new Application_Form_Edit();
$form->submit->setlabel('Edit Country');
$this->view->form = $form;
if($this->getRequest()->ispost())
{
$formData = $this->getRequest()->getpost();
if($form->isvalid($formData))
{
$id = $form->getvalue('country_id');
$name = $form->getvalue('name');
$continent = $form->getvalue('continent');
$file = new Application_Model_Country();
$file->updateCountry($id,$name,$continent);
$this->_helper->redirector('index');
}
else
{
$form->populate($formData);
}
}
else
{
$id = $this->getRequest()->getparam('country_id');
if($id >0)
{
$formData = $this->getRequest()->getpost();
$file = new Application_Model_Country();
$files = $file->fetchRow('country_id='.$id);
$form->populate($files->toArray());
}
}
}
两个代码都相同,那么为什么验证不能以添加形式工作?
答案 0 :(得分:1)
您需要在addAction
逻辑中更改以下代码:
而不是:
$this->populate($formData);
使用
$form->populate($formData);
原因是$this
表示在此上下文中的Action对象,并且您在EditAction中正确使用了$form
对象,因此它正常工作,因此它是一种愚蠢的输入错误。
PS:您还应该在isPost
,isValidate
等方法名称中使用正确的大小写,否则可能会在Linux环境中出错。