ulozeni hodnot z checkboxu do databaze

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
dryb
Člen | 8
+
0
-

Ahoj,
vytvořím ve formuláři kontejner s checkboxy, naplním hodnotami z databáze, pak některé checkboxy na stránce zakliknu, ale při pokusu o uložení do databáze se ukládají původní hodnoty a ne ty nové. Co je špatně? Díky.

protected function createComponentUserGroupForm()
{
$form = new Form();

$container = $form->addContainer(‚rights‘);
$rights = $this->rightRepository->findAll()->order(‚name ASC‘);

foreach ($rights as $right)
{
$container->addCheckbox($right->right_id, $right->description)
->setDefaultValue( false );
 }

$form->addSubmit(‚create‘, ‚Uložit‘);
$form->onSuccess[] = $this->userGroupFormSucceeded;

return $form;
}

public function actionUserGroupEdit($userGroupId)
{
.
 .

$rights = $this[„userGroupForm“]->getComponent(„rights“);
foreach ($rights->getControls() as $right)
{
$isRightSet = $this->userGroupRepository->isRightSet($this->userGroupId,$right->getName() );
$right->setValue($isRightSet <> null );
}
}
public function userGroupFormSucceeded(Form $form)
{
.
 .

$rights = $form->getComponent(„rights“);

foreach ($rights->getControls() as $right)
{
$right_id = $right->getName();

if( $right->getValue() )
{
$this->userGroupRepository->setRight( $this->userGroupId, $right_id );
}
}
.
.
 }

jiri.pudil
Nette Blogger | 1032
+
0
-

V actionUserGroupEdit metodě (která se vykoná ještě před zpracováním formuláře) si tu odeslanou hodnotu vždycky přepíšeš. Volej tam setDefaultValue() místo setValue(). A příště prosím formátovat kód, v tomhle se moc nedá vyznat.

dryb
Člen | 8
+
0
-

Moc děkuju :-)