Formulář překreslený snippetem

Shoxy
Člen | 37
+
0
-

Dobrý den,
už jsem vážně v koncích a nevím si rady. Potřebuji mít v presenteru jeden formulář pro množinu dat. Tedy Mám Routy a každá routa si nese své informace jako je zda je aktivní a své dodavatele, kteří mají také hodnotu zda jsou nebo nejsou aktivní a nyní potřebuji měnit data ve formuláři a následně je upravovat v databázi. Napadlo mě tohle:
Presenter

<?php

public function handleEdit($term)
{
$this->template->dodavatele = $this->dodavatel->byPath($term)->fetchAll();
$this->removeComponent($this['help']);
$this->actionEdit($term);
$this->createComponentHelp();
$this->redrawControl('dodavatele');
}

      public function createComponentHelp(){
        $term = $this->temp;
        if(!isset($term)){
          $term = "KH0201";
        }
        $pole = $this->database->table('cesty')->where('CestyNazev',$term)->fetchPairs('CestyID', 'CestyNazev');
        $aktivni = $this->database->query('SELECT CestyAktivni FROM Cesty WHERE CestyNazev = ?',$term)->fetch()->CestyAktivni;
        $dodavatele = $this->dodavatel->byPath($term)->fetchPairs('DodavateleID', 'DodavateleNazev');
        $aktivniDodavatele = $this->database->query('SELECT dodavatel FROM ces_dod WHERE aktivni = 1 AND cesta = 1')->fetchPairs();
        $form = new Form;
        $form->setMethod('POST');
        $form->addCheckbox('RouteActive', 'Aktivni:');
        $form->setDefaults(['RouteActive'=>$aktivni]);
        $form->addCheckboxList('dodavatele', NULL,$dodavatele);
        $form->setDefaults(array('dodavatele' => $aktivniDodavatele ));
        $form->addProtection(); // Ochrana proti Cross-Site Request Forgery
            $form->onSuccess[]=[$this,'UpdateFormSucceeded'];
            return $form;

      }

?>

Nevím jak předat proměnnou komponentě abych jí mohl znovu vytvořit s již aktualizovanými daty.
A poté ajaxove formulář odeslat a tím přepsat data v DB.
Latte:

<?php
      {snippet dodavatele}
      {ifset $dodavatele}
   	{form help}

      <div>{$dodavatele[0]->CestyNazev}</div>
      <div>{input RouteActive}</div>
      <div>
         <h2>Dodavatele pro cestu</h2>
         <table rules="all">
            <tr>
               <td></td>
               <td>Název dodavatele</td>
               <td>Aktivní</td>
            </tr>
                {foreach $form[dodavatele]->items as $key => $label}
                <tr>
				<td><a onclick="return confirm('Opravdu chcete smazat dodavatele?')" n:href="delete! $key">Smazat</a></td>
				<td>{$label}</td>
				<td><input n:name="dodavatele:$key"></td>
                </tr>
              {/foreach}


         </table>
      </div>
   	{/form}

      {/ifset}
      {/snippet}

?>

Děkuji za pomoc. Už jsem vážně v koncích a nevím si rady.

Editoval Shoxy (7. 3. 2018 21:19)

Felix
Nette Core | 1186
+
0
-

Snazil jsem se to precist 2× a hrozne by pomohlo, kdyz by jsi preformatoval kod. Ptas se na relativne hodne dotazu, zkus to nejak rozdelit do kategorii, abych mohl poradne zaregovat. Fakt jsem se snazil. :-)