Problém s více závislími dynamickými selecty…

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

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
+
0
-

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..