是否有一种简单的方法可以为Symfony表单标签声明CSS类?
这不起作用:
<?php echo $form['email']->renderLabel('class' => 'my-css') ?>
发现这个并且它有效,但感觉反直觉,因为它要求标签在模板中写出来使表单标签本身过时:
<?php echo $form['email']->renderLabel('This is a label text', array('class' => 'my-css') ?>
任何人都知道更好的方法吗?
由于
答案 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');