2013-04-10 71 views
0

我是symfony的新手。我写了一个表单提交的代码。如何通过symfony 1.4获得无效表单的原因?

public function executeEdit(sfWebRequest $request) 
    { 
     $userId = $request->getParameter('id'); 
     $this->user = sfGuardUserTable::getUserById($userId); 
     $this->form = new editOwnerForm($this->user); 
     $this->paymentForm = new profilePaymentInfoForm($this->user->getPaymentInformation()); 

     if ($request->getMethod() == sfWebRequest::POST) { 
      $this->form->bind($request->getParameter($this->form->getName())); 
      if ($this->form->isValid()) { 
       $this->form->save(); 
       $this->message = 'Successfully updated owner details';        
      } else { 
       var_dump($this->form->renderGlobalErrors()); die; 
      } 
     } 
    } 

总是我的表单无效。 (总是运行其他部分有效的形式)但我找不到原因。 var_dump($this->form->renderGlobalErrors());不要给任何消息。我该如何解决它。?

+0

您是否打开了* _dev.php并检查开发者工具栏中是否存在错误? – 2013-04-10 11:10:54

+0

我已经使用dev.php。它不会给出任何错误或原因。我也检查日志文件。它也不显示这个问题的原因。 – 2013-04-10 11:23:52

+0

禁用csfr令牌进行测试 – 2013-04-10 11:25:22

回答

5

您需要从表单提交发现错误...

调试栏的视图部分应以橙色显示,并突出显示形式的任何错误 - 只需点击“查看”,然后突出显示的表单字段。

如果没有,你可以尝试改变你的catch块像这样进行调试:

foreach ($this->form as $key => $field) { 
    $message = $field->renderError(); 
    if ($message) echo 'Error with field ', $key, ':', $message; 
} 

不包括CSRF字段是一个常见的问题 - 有你要包括$形式 - > renderHiddenFields(通话)在你的形式部分?

+0

这可行,但你在“回声”行中有错误。它应该是“。”而不是“,”。 – brpaz 2013-05-22 15:39:51

+1

不,它应该是“,”:)在使用echo直接输出事件时,使用逗号比句点更有效。 – caponica 2013-06-12 12:47:34

+0

我不知道你可以做到这一点。谢谢。 – brpaz 2013-06-13 08:24:34

相关问题