【问题标题】:Custom CSS classes for Symfony form labels?Symfony 表单标签的自定义 CSS 类?
【发布时间】:2011-01-15 13:00:45
【问题描述】:

有没有一种简单的方法来为 Symfony 表单标签声明 CSS 类?

这不起作用:

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

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

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

有人知道更好的方法吗?

谢谢

【问题讨论】:

  • 只是先发制人:是的,我知道可以将属性附加到 CSS 中的“标签”标签,但在这种特殊情况下,我需要在同一表单中使用不同类型的标签。跨度>

标签: css forms symfony1 label


【解决方案1】:

您可以通过创建扩展 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');

【讨论】:

    【解决方案2】:

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

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

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

    $label 标签名(不为null覆盖当前值)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-10
      • 2013-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-17
      • 2018-11-05
      相关资源
      最近更新 更多