2011-04-21 52 views
0

我用這個驗證碼在的actions.class.php驗證輸入,symfony框架

$name = $this->getRequestParameter('title');  
if (!$name) 
{ 
    $this->getRequest()->setError('The name field cannot be left blank'); 
    return false; 
} 

但是遇到這樣的錯誤

You must set "compat_10" to true if you want to use this method which is deprecated. 

在錯誤日誌。得到這個錯誤之後,我設置了compat_10truesettings.yml,但仍然得到相同的錯誤。

+2

你不使用表單框架嗎?你可以使用它在表單字段上設置驗證器。 – terrid25 2011-04-21 12:09:15

回答

0

根據您要如何努力失敗,您可以執行下列操作之一:

  • 拋出一個sfException ...這顯示了通用的500錯誤消息。
  • 轉發給404.例如,當你的標題是url的一部分或其他類型的選擇參數。有一個方便的方法來做到這一點:$this->forward404Unless($name, 'No title provided')
  • 將您的消息設置爲模板var $this->errorMessage = '...';,然後返回錯誤視圖return sfView::ERROR,並在模板actionError.php中顯示一條好消息。

(我可能會去第二)

0

您可以使用特殊處理的錯誤處理

try { 
$this->getRequest() 
} catch (\Doctrine\ORM\NoResultException $e) { 
return null; 
} 
+0

這是爲doctrine2和/或symfony 2,OP談symfony 1 – j0k 2013-02-28 17:13:53

1

$this->getRequest()->setError()方法僅適用於symfony的1.0和1.1,從symfony的strating 1.2驗證器行爲和動作中的所有錯誤處理已被刪除,以便更加符合新的表單框架。

我猜你正在使用的版本1.2到1.4,在這種情況下,您嘗試使用的方法已被棄用,您必須爲此啓用compat_10插件。我發現你已經啓用了它,但由於它的行爲來自一個插件,所以你必須確保你的ProjectConfiguration::configure()方法中啓用了sfCompat10Plugin

作爲一個方面說明,最好使用表單框架的驗證器來處理這類錯誤。

+0

好的答案,Trak,歡迎來到SO! – Brian 2013-08-29 23:10:05