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
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)
- Pavel Kravčík
- Člen | 1196
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.