Symfony表单标签的自定义CSS类?

时间:2010-02-11 01:14:34

标签: css forms symfony1 label

是否有一种简单的方法可以为Symfony表单标签声明CSS类?

这不起作用:

<?php echo $form['email']->renderLabel('class' => 'my-css') ?>

发现这个并且它有效,但感觉反直觉,因为它要求标签在模板中写出来使表单标签本身过时:

<?php echo $form['email']->renderLabel('This is a label text', array('class' => 'my-css') ?>

任何人都知道更好的方法吗?

由于

2 个答案:

答案 0 :(得分:7)

将null传递给第一个参数不会覆盖标签文本:

<?php echo $form['email']->renderLabel(null, array('class' => 'my-css')) ?>

http://www.symfony-project.org/api/1_4/sfFormField#method_renderlabel

  

$ label标签名称(非空以覆盖当前值)

答案 1 :(得分:2)

您可以通过创建扩展sfWidgetFormSchemaFormatter的自定义类来更改每个表单的格式化程序

    class sfWidgetFormSchemaFormatterCustom extends sfWidgetFormSchemaFormatter
{
  protected
    $rowFormat       = "<tr>\n  <th class=\"my-label-class\">%label%</th>\n  <td>%error%%field%%help%%hidden_fields%</td>\n</tr>\n",
    $errorRowFormat  = "<tr><td class=\"my-error-class\" colspan=\"2\">\n%errors%</td></tr>\n",
    $helpFormat      = '<br />%help%',
    $decoratorFormat = "<table>\n  %content%</table>";
}

然后,您可以更改表单类中的格式化程序:

$this->getWidgetSchema()->setFormFormatterName('custom');

或者您可以为config / ProjectConfiguration.class.php文件中的每个表单设置新的格式化程序:

sfWidgetFormSchema::setDefaultFormFormatterName('custom');