2010-03-21 72 views
1

我能够做到在一组的所有复选框以下(在行动)检查:具体复选框symfony的1.4

$this->form->getWidget('some_form_field')->setAttribute('checked', 'checked'); 

...但我无法设置特定的复选框勾选基于从数据库返回的数据。

我喜欢的东西后我:

$this->form->getWidget('some_form_field')->setAttributes(array(....)); 

...在那里我可以指具体的复选框以某种方式打勾或数组传递给它。

在这个symfony文档中没有什么特别的,我已经足够尝试一打组合来使它工作。

任何帮助,将不胜感激。

谢谢。

回答

3

这听起来有点不寻常?你使用生成的推动/教条形式吗?他们应该自动处理它。

无论采用哪种方式,设置checked属性都不是实现此目的的正确方法。更好的方法是在表单中(因为据我记得,这 - $> widgetSchema保护)做:

$this->widgetSchema['some_form_field']->setDefault(array('value1', 'value2')); 

那么这将导致使用这些值部件进行检查。

(如果那是不对的,我写了我的头顶,我可以挖掘出一些代码和检查,所以让我知道!)

+0

@benlumley ...感谢,但形式获取呈现“没有被选中“,这样当我从数据库中取出数据时,我可以在模板中渲染表单,并将这些复选框预先检查并以这种方式存储在数据库中。正如我上面提到的,我可以用它来预先检查它们的全部(无论是在表单类还是在行动中),但我需要控制各个复选框的级别。 – Tom 2010-03-21 19:26:12

+1

...实际上你的上面的代码是正确的方向。刚刚得到它的工作:$ this-> form-> getWidget('some_form_field') - > setDefault(array('1','2')); 谢谢! – Tom 2010-03-21 19:29:54

+0

您仍然可以通过向表单添加一个方法来接受输入并在相关复选框中设置“已选中”来实现此目的。然后,您可以从操作中调用此方法并将其传递给您的数据。 如果您需要在视图中执行此操作(在我看来这有点麻烦),也有办法这么做 - 每个小部件的render方法都可以接受当前值的数组。 – benlumley 2010-03-21 19:33:07