Пользовательские классы CSS для ярлыков форм Symfony? - PullRequest
2 голосов
/ 11 февраля 2010

Есть ли простой способ объявить классы CSS для меток форм Symfony?

Это не работает:

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

Нашел это, и это работает, но это кажется нелогичным, так как делает ярлыки форм устаревшими, требуя, чтобы ярлык был записан в шаблоне:

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

Кто-нибудь знает лучший способ?

Спасибо

Ответы [ 2 ]

7 голосов
/ 11 февраля 2010

Передача нулевого значения первому параметру не отменяет текст метки:

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

http://www.symfony -project.org / апи / 1_4 / sfFormField # method_renderlabel

$ label Имя метки (не ноль для переопределения текущего значения)

2 голосов
/ 11 февраля 2010

Вы можете изменить форматер для каждой формы, создав собственный класс, который расширяет 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');
...