Вот как я это решил.
Я взял оба предложения от johnwards и richsage и соединил их:
«Подобные вещи должны обрабатываться в представлении / действии».
"Доступ к опциям / атрибутам, передаваемым самому виджету."
Сначала я добавляю класс CSS к самому вводу (даже если я не буду его использовать).
В моем обычном классе myForm extends sfForm
,
foreach ($fixtures as $fixture) {
$widgetFixtures[$fixture->getId()] = new sfWidgetFormInputText(
array('label' => $fixture->getTeamNameDom()),
array('value' => $fixture->getScore1(),
'readonly' => 'readonly',
'class' => $fixture->getCSS())
);
}
Затем в шаблоне вместо использования echo $form;
я добавляю класс CSS к метке, как показано ниже:
foreach ($form as $widgetId => $widget) {
...
$labelClass = $widget->getWidget()->getAttribute('class');
echo '<td>'.$widget->renderLabel(null, array('class' => $labelClass)).'</td>';
...
}
Возможно, это не лучший способ решить эту проблему, но он работает.
Спасибо всем за отзыв!