Formulář překreslený snippetem
- Shoxy
- Člen | 37
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)