symfony 1.4 - 有没有办法在模板中获取renderError()的文本?

时间:2013-08-30 07:50:29

标签: symfony1 symfony-1.4 symfony-forms

我正在尝试学习symfony ..有人可以告诉我是否有像renderErrorText()这样的方法吗?因为此方法renderError()输出带有ul / li标记的html。我只想要错误的文本,而不是它的HTML。

1 个答案:

答案 0 :(得分:0)

您需要定义自己的装饰器。 renderError使用预先格式化的格式来显示html渲染器。

创建类似lib/form/sfWidgetFormSchemaFormatterMyFormatter.class.php的文件:

<?php

class sfWidgetFormSchemaFormatterMyFormatter 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;

在这个类中,您可以定义如何格式化和呈现错误。

然后,您需要将此类定义为表单的默认格式化程序。如果这是关于您的前端环境,请apps/backend/config/frontendConfiguration.class.php

class frontendConfiguration extends sfApplicationConfiguration
{
  public function configure()
  {
    sfWidgetFormSchema::setDefaultFormFormatterName('MyFormatter');
  }
}

或者,如果您希望它在您的项目中是全局的,请config/ProjectConfiguration.class.php

class ProjectConfiguration extends sfProjectConfiguration
{
    public function setup()
    {
        sfWidgetFormSchema::setDefaultFormFormatterName('MyFormatter');
    }
}

你会发现: