2011-09-23 30 views
2

我正在使用symfony 1.4。我該如何更改symfony表單錯誤信息?

我有一個這樣的形式:

驗證:

$this->setValidator('name', new sfValidatorString(array('required' => true)));  

觀點:

<?php echo $form['name']->renderError() ?> 

如何更改 「所需的」 錯誤消息在默認情況下,例如,「此字段是必需的」?

編輯:此外,我如何擺脫由renderError()產生<ul><li>標籤。方法 ?我只想顯示文本,沒有額外的標記。


注:這是一個明顯的問題,但因爲我花了很長時間找出來,我覺得這個問題diserves在這裏問。

回答

5

1.更改所需的信息:

new sfValidatorString(
    array(
     'required' => true, 
    ), 
    array(
     'required'=>'You custom required message' 
    )); 

2.創建新的格式化程序類。

3.重新定義你想要的屬性。

<?php 
class myWidgetFormSchemaFormatter extends sfWidgetFormSchemaFormatter 
{ 

    protected 
    $rowFormat     = '', 
    $helpFormat    = '%help%', 
    $errorRowFormat   = '%errors%', 
    $errorListFormatInARow  = " <ul class=\"error_list\">\n%errors% </ul>\n", 
    $errorRowFormatInARow  = " <li>%error%</li>\n", 
    $namedErrorRowFormatInARow = " <li>%name%: %error%</li>\n", 
    $decoratorFormat   = '', 
    $widgetSchema    = null, 
    $translationCatalogue  = null; 

4.In的symfony形式的配置方法添加

$oDecorator = new myWidgetFormSchemaFormatter($this->getWidgetSchema()); 
$this->getWidgetSchema()->addFormFormatter('myCustom', $oDecorator); 
$this->getWidgetSchema()->setFormFormatterName('myCustom'); 
4
new sfValidatorString(array('required' => true), array('required'=>'This field is required')) 

而且你可以通過擴展sfWidgetFormSchemaFormatter格式化您的形式輸出創建一個自定義WidgetFormSchemaFormatter。