我有一个用一系列复选框定义的小部件,主要用于构建一个位标志。所以我有一个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来做这件事。
答案 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));