将CSS属性添加到Symfony表单标签?
我尝试在我的自定义sfForm中为标签添加一些CSS属性,但我无法实现它。将CSS属性添加到Symfony表单标签?
在我的自定义类myForm extends sfForm
,我动态创建的所有文本框:
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);
}
我试着用setFormFormatterName
但没有成功格式化渲染。
注意:我不能在模板中使用renderLabel($value, $attributes = array())
,因为我从数据库中获得CSS类(正如您可能已经看到的,我必须使用:$ fixture-> getCSS())。
有人可以摆脱我的光?
非常感谢。
下面是我如何解决它。
我把johnwards和richsage的两条建议放在一起:
“这种东西应该在视图/动作中处理。”
“访问传递给Widget本身的选项/属性。”
首先,我将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>';
...
}
也许是不是解决这个问题的最好方法,但它有效。
谢谢大家的反馈!
你试图做的似乎是可能的,但你的灰色语法似乎有点关闭。试试这个:
$widgetFixtures[$fixture->getId()] = new sfWidgetFormInputText(
array('label' => $fixture->getTeamNameDom()),
array('class' => $fixture->getCSS()),
array('value' => $fixture->getScore1(), 'readonly' => 'readonly')
);
...或检查“的sfWidgetForm基地班”节在这里:http://www.symfony-project.org/forms/1_4/en/A-Widgets
如果您想将CSS添加到标签 - 特别是呈现标签的方法,您可以尝试覆盖该小部件类。然后,您可以做类似
$foo = new myWidgetFormInputText(array("myCSSClass" => $fixture->getCSS()));
,然后覆盖你的renderLabel()
方法或你的widget类似。您的小部件将有权访问您通过的选项 - 在上面的示例中,myCSSClass
是选项密钥。然后,您可以将此类值应用于您的小部件标签。
小工具没有renderLabel方法,它们位于表单域中。 http://www.symfony-project.org/api/1_2/sfFormField很多非常令人讨厌的东西让它起作用,在动作/视图中更简单 – johnwards 2010-06-28 18:47:40
这比这更容易。只需将CSS应用于标签的标签...
label[for=payment_cardNumber]
{
margin-top: 20px;
color: red;
}
sfWidgetFormInputText只接受2个参数$ options = array()和$ attributes = array()。 我已经看过symfony网站,并且找不到有关将css属性放入标签的任何信息... 像“setLabel($ name,$ value)”这样的函数不能解决问题 – ocornu 2010-06-28 06:32:21