removeComponent nezruší Rules (required)

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

Klasicky dle dokumentace vytvářím formulář:

<?php
    protected function createComponentTagEditForm() {
        $form = new Form();
        $groups = $this->model->getGroups($this->user->identity->org_id);
        $form->addSelect('group_id', 'Přístup:', $groups)->setRequired();
        $form->addSelect('grprght', 'Práva:', self::$grprght)->setRequired();
        $form->addText('name', 'Štítek:');
        $form->addSubmit('save', 'Ulož');
        $form->addSubmit('delete', 'Smaž');
        $form->addSubmit('cancel', 'Zpět');
        $form->onSuccess[] = array($this, 'tagEditFormSubmitted');
        return $form;
    }
?>

Při rendrování pak kontroluji, zda má přístup nastavování práv a podle toho případně smažu dané prvky

<?php
    public function renderEdit($id) {
        $where = $this->baseCondition($id, Module::RIGHT_EDIT);
        $row = $this->model->getModule(Module::TAG, $where, NULL);
        if (!$row) $this->redirect ('Tag:default');
        $this['tagEditForm']->setDefaults($row);
        if (!$this->hasRightPermission($row->user_id, $row->group_id, $row->grprght)) {
            $this['tagEditForm']->removeComponent($this['tagEditForm']['group_id']);
            $this['tagEditForm']->removeComponent($this['tagEditForm']['grprght']);
        }
    }
?>

Problém je, že takto to nefunguje, protože se sice odstraní komponenty, ale zůstane od nich Rule že jsou Required.

Editoval pcs (20. 8. 2016 21:37)

David Matějka
Moderator | 6445
+
+2
-

Zkus to presunout z renderEdit do actionEdit

GEpic
Člen | 566
+
-2
-

grprght :D

Pavel Kravčík
Člen | 1196
+
+1
-

GEpic napsal(a):

grprght :D

Group right? Tři znaky bych kvůli zkrácení neobětoval, ale třeba je to u nich zaběhlý termín.