symfony设置表单中特定复选框小部件的值

时间:2011-09-28 14:59:07

标签: symfony-1.4

我有一个用一系列复选框定义的小部件,主要用于构建一个位标志。所以我有一个DB列'access_bits',我在表单类中生成了几个复选框,格式为'access_bits []',具有适当的值(即1,2,16,1024等)

按照这篇文章的解决方案(Symfony: How to change a form field attribute in an action?) - 这很简单明智 - 我能够神奇地为所有复选框设置属性。但是我如何针对具体的目标(最好是按值)?

要澄清:

HTML:

<input name="user[access_bit][]" value="1" /> Level 1
<input name="user[access_bit][]" value="2" /> Level 2
<input name="user[access_bit][]" value="4" /> Level 3
<input name="user[access_bit][]" value="8" /> Level 4

在DB中,我有一个具有按位整数的列。因此,例如,要检查级别1和级别2,列中的值将为3.要全部检查它们,值将为15.

“我想要的”PHP in action.class.php

$exampleValue = 4;
foreach ($form->getWidget('access_bit') as $thisWidget)
{
    if ($thisWidget->getValue() == $exampleValue)
    {
        $thisWidget->setAttribute('checked','checked');
    }
}

...这会巧妙地将Level 3旁边的复选框设置为勾选。

我不想使用jQuery来做这件事。

3 个答案:

答案 0 :(得分:0)

$ this-&gt; setDefault('checkbox',true);

你也可以使用jQuery: Setting "checked" for a checkbox with jQuery?

答案 1 :(得分:0)

你可以在你的表格上试试....你可以使用这个

 $samplevar =  $this->your_form->save();
 $samplevar->setYOURFORMFIELDNAME(array of values(1,2,3)); 
 $this->sample = YOURFORM($samplevar);

,或者

在首先显示表单时,您还可以在设置

时传递表单中的值
 $this->samplevariable = YOURFORM($this->getYOURMODEL->setYOURFORMFIELDNAME(array of values(1,2,3) which u get form db getYOURFORMFIELDNAME); 

如果您使用逗号分隔值,则直接使用“直接爆炸”

 $samplevar =  $this->YOURFORMNAME->save();
 $samplevar->setYOURFORMFIELDNAME(explode(',', $samplevar ->getYOURFORMFIELDNAME())); 
 $this->YOURFORMNAME  = new YOURFORMForm($samplevar);

答案 2 :(得分:0)

尝试使用setDefault方法:

$thisWidget->setDefault(array($examplevalue));