Значение параметра Symfony для определенных виджетов-флажков в форме - PullRequest
0 голосов
/ 28 сентября 2011

У меня есть виджет, определенный серией флажков, который по существу используется для создания битового флага. Таким образом, у меня есть столбец БД «access_bits», и у меня есть несколько флажков, сгенерированных в классе формы в формате «access_bits []», с соответствующими значениями (то есть 1,2,16,1024 и т. Д.)

после решения этого поста ( Symfony: Как изменить атрибут поля формы в действии? ) - что просто и разумно - я могу волшебным образом установить атрибут для все флажки. Но как я могу ориентироваться на конкретные (желательно по значению)?

ДЛЯ УТОЧНЕНИЯ:

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

В БД у меня есть столбец с побитовым целым числом. Так, например, чтобы проверить уровень 1 и уровень 2, значение в столбце будет равно 3. Чтобы проверить их все, значение будет равно 15.

PHP "Что я хочу" в action.class.php

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

... который бы хитро поставил флажок рядом с уровнем 3 как отмеченный.

Я не хочу использовать jQuery для этого.

Ответы [ 3 ]

0 голосов
/ 12 октября 2011

вы можете попробовать это .... в вашей форме сохранить вы можете использовать это

 $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); 

если у вас есть значения через запятую, вы можете использовать explode напрямую

 $samplevar =  $this->YOURFORMNAME->save();
 $samplevar->setYOURFORMFIELDNAME(explode(',', $samplevar ->getYOURFORMFIELDNAME())); 
 $this->YOURFORMNAME  = new YOURFORMForm($samplevar);
0 голосов
/ 12 октября 2011

Попробуйте использовать метод setDefault:

$thisWidget->setDefault(array($examplevalue));
0 голосов
/ 28 сентября 2011

$ this-> setDefault ('checkbox', true);

также вы можете использовать jQuery: Установка флажка для галочки в jQuery?

...