symfony 1.4表单:使用<p>而不是</p> <li> </li>

时间:2012-02-11 03:56:56

标签: symfony-1.4

使用

调用表单时
print $widget->render()

而不是打印

<li>
       <label ...>
       <input ...>
</li>

如何打印

<p>
    <label ...>
    <input ...>
</p>

PS:以我的形式:

public function configure()
{
    $this->widgetSchema->setFormFormatterName('list');
}

2 个答案:

答案 0 :(得分:2)

您必须按照here所述创建自己的表单架构格式化程序类。例如,要使用段落,您只需重新声明$ rowFormat变量:

#lib/widget/sfWidgetFormSchemaFormatterParagraph.class.php

class sfWidgetFormSchemaFormatterParagraph extends sfWidgetFormSchemaFormatter
{
    protected $rowFormat = "<p>
                         %label% \n %error% <br/> %field%
                         %help% %hidden_fields%\n</p>\n";
}

如果要对项目的所有形式使用此格式,请将其添加到ProjectConfiguration类(并从表单中删除$ this-&gt; widgetSchema-&gt; setFormFormatterName('list')):

class ProjectConfiguration extends sfProjectConfiguration
{
    public function setup()
    {
      // ...

      sfWidgetFormSchema::setDefaultFormFormatterName('paragraph');
    }
 }

如果您只想将其用于一个表单,请将其添加到表单类中:

    public function setup()
    {
         $this->widgetSchema->addFormFormatter('paragraph', new sfWidgetFormSchemaFormatterParagraph($this->widgetSchema));
         $this->widgetSchema->setFormFormatterName('paragraph');
         parent::setup();
    }

答案 1 :(得分:0)

只需查看sfWidgetFormSchemaFormatterListsfWidgetFormSchemaFormatter.class.php即可。您可以从中创建自己的架构,例如sfWidgetFormSchemaFormatterParagraph,并更改类的属性以满足您的需求。 (您可能只需要更改$decoratorFormat$rowFormat。例如:

$rowFormat = "<p> %error%%label%\n  %field%%help%\n%hidden_fields%</p>"
$decoratorFormat = "%content%"