如何更改symfony表单错误消息?

时间:2011-09-23 17:19:18

标签: php symfony1 symfony-1.4

我正在使用symfony 1.4。

我有一个这样的表格:

验证

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

查看:

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

如何更改默认的“必需”错误消息,例如“此字段是否必需”?

修改:此外,我如何摆脱<ul>生成的<li>renderError()标记。方法 ?我只想显示文本,没有额外的标记。


注意:这是一个显而易见的问题,但由于我花了很长时间才发现,我认为这个问题在这里被问到了。

2 个答案:

答案 0 :(得分: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.在symfony表单的configure方法中添加

$oDecorator = new myWidgetFormSchemaFormatter($this->getWidgetSchema());
$this->getWidgetSchema()->addFormFormatter('myCustom', $oDecorator);
$this->getWidgetSchema()->setFormFormatterName('myCustom');

答案 1 :(得分:4)

new sfValidatorString(array('required' => true), array('required'=>'This field is required'))

您可以通过扩展sfWidgetFormSchemaFormatter来格式化表单输出来创建自定义WidgetFormSchemaFormatter。