I try to add some css attributes to labels in my custom sfForm but I can’t achieve it.
In my custom class myForm extends sfForm, I create all textfields dynamically:
public function configure()
{
$widgetFixtures = array();
foreach ($fixtures as $fixture) {
$widgetFixtures[$fixture->getId()] = new sfWidgetFormInputText(
array('label' => $fixture->getTeamNameDom()),
// I would like to add something like: array('class' => $fixture->getCSS()),
array('value' => $fixture->getScore1(), 'readonly' => 'readonly')
);
}
$this->setWidgets($widgetFixtures);
}
I tried to format the rendering with setFormFormatterName but without success.
Note: I can’t use renderLabel($value, $attributes = array()) in the template because I get the CSS class from the DB (as you may have seen, I have to use: $fixture->getCSS()).
Could someone shed my light?
Many thanks.
Here is how I solved it.
I took both suggestions from johnwards and richsage and put them together :
“This sort of stuff should be handled in the view/action.”
“Access to the options/attributes passed to the Widget itself.”
First, I add the CSS class to the input itself (even if I will not use it).
In my custom class
myForm extends sfForm,Then, in the template, instead of using
echo $form;, I add the CSS class to the label as shown below:Maybe it is not the best way to solve this issue but it works.
Thanks all for your feedback!