Problém s více závislími dynamickými selecty…
- Miky0007
- Člen | 73
Ahoj poradí někdo kde mám chybu prosím…Mám dva dynamické selecty
první (selectForm) funguje (pokud není v šabloně i kod druhého selectu) a
druhý nefunguje:
Šablona vypadá takto:
{form selectForm}
{label static /} {input static}
{snippet form}
{label dynamic /} {input dynamic}
{/snippet}
{input send}
{/form selectForm}
{form smazatOpravneniForm}
{label statickePole /} {input statickePole}
{snippet form1}
{label dynamickePole /} {input dynamickePole}
{/snippet}
{input odeslat}
{/form smazatOpravneniForm}
<script type="text/javascript">
$("form").delegate('#'+{$control["selectForm-static"]->htmlId}, 'change', function() {
$.ajax({
url: {link selectLoad!},
data: "static_id=" + $("#frmselectForm-static").val(),
type: 'get'
});
});
$("form1").delegate('#'+{$control["smazatOpravneniForm-statickePole"]->htmlId}, 'change', function() {
$.ajax({
url: {link smazatOpravneniLoad!},
data: "static_id1=" + $("#frmsmazatOpravneniForm-statickePole").val(),
type: 'get'
});
});
</script>
Kod v presenteru vypadá takto:
function renderAdmin($page = 1)
{
$this->template->page = $page;
$this->template->uzivatele=$this->context->userModel->getUser();
$this->template->role = $this->context->userModel->getRole();
$this->template->uzivatelskeRole = $this->context->userModel->getUzivRole();
$this->template->_form = $this['selectForm'];
$this->template->_form1 = $this['smazatOpravneniForm'];
}
public function handleSelectLoad($static_id){
$form = $this->getComponent("selectForm"); // our form
$values = $form->getValues();
$role= $this->context->userModel->getNewRole($static_id);
$form["dynamic"]->setItems($role); // set up new values
$this->invalidateControl("form"); // invalidate ajax snippet
}
/**
* Simple form
**/
protected function createComponentSelectForm()
{
$uzivatele = $this->context->userModel->getUser();
$role= $this->context->userModel->getRole();
$staticArray = $uzivatele->fetchPairs('id', 'nick');
$dynamicArray = $role->fetchPairs('id','opravněni');
$form = new UI\Form;
$form->addSelect("static","Uživatel", $staticArray);
$form->addSelect("dynamic","Oprávnění", $dynamicArray);
$form->addSubmit("send", "Přidat uživatele");
$form->onSuccess[] = callback($this, "selectFormSent");
return $form;
}
/**
* Shows values from selects
* @param form
**/
public function selectFormSent($form)
{
$values = $form->getHttpData(); // getValues() is not enough for $form["dynamic"]
$this->context->userModel->addAuthorization($values["static"], $values["dynamic"]);
$this->redirect('admin');
}
protected function createComponentSmazatOpravneniForm()
{
$tabulkaUzivatele = $this->context->userModel->getUser();
$tabulkaRole= $this->context->userModel->getRole();
$statickePole = $tabulkaUzivatele->fetchPairs('id', 'nick');
$dynamickePole = $tabulkaRole->fetchPairs('id','opravněni');
$formular = new UI\Form;
$formular->addSelect("statickePole","Uživatel", $statickePole);
$formular->addSelect("dynamickePole","Oprávnění", $dynamickePole);
$formular->addSubmit("odeslat", "Smazat uživatele");
$formular->onSuccess[] = callback($this, "smazatOpravneniSent");
return $formular;
}
public function smazatOpravneniSent($formular)
{
$values = $form1->getHttpData(); // getValues() is not enough for $form["dynamic"]
$this->context->userModel->deleteAuthorization($values["statickePole"], $values["dynamickePole"]);
$this->redirect('admin');
}
public function handleSmazatOpravneniLoad($static_id1){
echo $static_id1;
$form1 = $this->getComponent("smazatOpravneniForm"); // our form
$values = $form1->getValues();
$role= $this->context->userModel->getNewRole($static_id1);
$form1["dynamickePole"]->setItems($role); // set up new values
$this->invalidateControl("form1"); // invalidate ajax snippet
}
Laděnka hlásí toto:
Nette\InvalidArgumentException
Component with name ‚dynamickePole‘ does not exist
Nenapadá prosím někoho co by mohlo bejt špatně ? Děkuju
- Miky0007
- Člen | 73
Není problém třeba tady :
$this->template->_form = $this[‚selectForm‘];
$this->template->_form1 = $this[‚smazatOpravneniForm‘];
Neví někdo prosím jestli nedělá to podtržítko něco
kouzelnýho _form?
Pokud ty formuláře nemám vložený do jedný šablony..A ten select dynamické pole přejmenuju na dynamic..Tak mně to šlape…Ale dva formuláře na jedný stránce a s výše uvedeným pojmenováním nemůžu rozchodit..