více editačních formulářů na v jedné šablobě

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

Zdravím Vás,

potřeboval bych nasměrovat. Potřebuji na jednom místě v aplikaci vytvořit editační tabulku, přes kterou bude možné editovat záznamy z DB. (datagridy používat nechci). Tzn. počet editačních formulárů = počet záznamů v tabulce z DB. Záznamy z db by se rovnou vypisovali do formuláře, který by byl jednořádkový a jedním kliknutím na příslušný submit, by se změny uložily.

Mám vytvořený formulář v komponentě, ve které se nastaví data z definovaného id:

protected function createEditForm()
{


    $form = new Form;
    $form->addHidden('id');
    $form->addText('count', '')
        ->setRequired();
    $form->addText('name', '')
        ->setRequired();
    $form->addText('surname', '')
        ->setRequired();

    $form->addSubmit('send', 'Save');
    $form->onSuccess[] =  array($this, 'actionTarget');
    $set = $this->database->table('committee')->get(6);
    $control->setDefaults($et->toArray());

    return $form;

}

který volám v šabloně:

{control editCommitteeForm}

Napadlo mě udělat něco na způsob:

{foreach $polozkaDB as $p}
{? $presenter->edit($p->id); }
{/foreach}

kde by akce/metoda/komponenta Edit() vytvořila v šabloně pro každé id editační formulář z komponenty a nějak by mu musela předat id..
Jen nevím jak by měla taková metoda vypadat..

Díky za jakoukoliv pomoc:-)

David Matějka
Moderator | 6445
+
0
-

pouzij multiplier

JanBE
Člen | 62
+
0
-

matej21 napsal(a):

pouzij multiplier

Díky za radu. Mám Nette 2.1.2 a laděnka hlásí:

Call to undefined method Nette\Application\UI\Multiplier::render().

Je možný, že by to bylo rozdílnou verzí Nette?

David Matějka
Moderator | 6445
+
0
-

Ukaz kod..
tipuju, ze spatne vykreslujes.. musis vykreslovat jednotlive komponenty pomoci

{control editForm-$id}
JanBE
Člen | 62
+
0
-

Výpis v šabloně:

{foreach $table as $i}
    {$i->name}
    {$i->surname}
    {control editForm-$i->id}
{/foreach}

v presenteru:

protected function createComponentEditForm()
{

     return new Multiplier(function () {
     $form = new Form;
    $form->addHidden('id');
    $form->addText('count', '')
        ->setRequired();
    $form->addText('name', '')
        ->setRequired();
    $form->addText('surname', '')
        ->setRequired();

    $form->addSubmit('send', 'Save');
    return $form;
 });
    }

Editoval JanBE (22. 3. 2014 15:41)

David Matějka
Moderator | 6445
+
0
-

mne to funguje, hod sem celou ladenku..

JanBE
Člen | 62
+
0
-

matej21 napsal(a):

mne to funguje, hod sem celou ladenku..

Mně už taky, měl jsem výše v kódu šablony starý zápis komponenty.
Díky.