Как изменить сообщение об ошибке формы Symfony? - PullRequest
2 голосов
/ 23 сентября 2011

Я использую Symfony 1.4.

У меня есть такая форма:

валидатор:

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

view:

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

Как изменить стандартное «обязательное» сообщение об ошибке, например, «Это поле обязательно для заполнения»?

Редактировать: Такжекак избавиться от тегов <ul> и <li>, сгенерированных renderError().метод?Я просто хочу, чтобы текст отображался, без дополнительной разметки.


Примечание: Это очевидный вопрос, но, поскольку мне потребовалось много времени, чтобы выяснить это, я думаю, чтоздесь возникает вопрос.

Ответы [ 2 ]

5 голосов
/ 24 сентября 2011

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 добавьте

$oDecorator = new myWidgetFormSchemaFormatter($this->getWidgetSchema());
$this->getWidgetSchema()->addFormFormatter('myCustom', $oDecorator);
$this->getWidgetSchema()->setFormFormatterName('myCustom');
4 голосов
/ 23 сентября 2011
new sfValidatorString(array('required' => true), array('required'=>'This field is required'))

И вы можете создать пользовательский WidgetFormSchemaFormatter, расширив sfWidgetFormSchemaFormatter для форматирования вывода формы.

...