Autor Zpráva
piiiiiiiip
Profil
Dobrý den.
Vytvářím anketu v nettte a narazil jsem na menší zádrhel. Potřebuju udělat formulář na vytvoření a upravení ankety, kde vyplním otázku a odpovědi. S těma odpovědma jsem ale narazil na problém. Potřebuji aby se mi zobrazily dvě políčka pro odpovědi když anketu vytvářím a vždy když jedno vyplním oběví se další prázdné. Nakonec všechny ty odpovědi uložím do db jako array, nevím ale jak na ten form.
Dan Charousek
Profil
Něco takového?
piiiiiiiip
Profil
Ano.
piiiiiiiip
Profil
Jak to zprovozním v nette? Já do formuláře nedostanu div.
Kcko
Profil
piiiiiiiip:
Pokud máš tyhle otázky tak prosímtě v Nette vůbec nedělej a vydej se opačnou cestou od základů směrem nahoru ...
piiiiiiiip
Profil
Tak ono to jde i na id formu ale jen na djpw a na webu ne.


Kcko:
Učím se to od základů.
Keeehi
Profil
piiiiiiiip:
Já do formuláře nedostanu div.
Ale dostaneš, v nejhorším případě nebudeš formulář vykreslovat automaticky ale ručně.
piiiiiiiip
Profil
Ano, to už jsem si našel a použil jsem místo toho id formuláře. Ještě jsem to sice nezorchodil ale už se k tomu blížím (snat).
Když dám do formuláře jen odpovědi a submit tak se mi ty inputy ukáží, mimo skupinu ale ukáží.
        $form = new Form;
        $form->addGroup('answersGroup');
        $answers = $form->addContainer('answers');
        $answers->addText('answers', 'Odpověd');
        $submit = $form->setCurrentGroup(NULL);
        $submit->addSubmit('submit', 'Vytvořit Anketu.');
        $form->onSuccess[] = [$this, 'polleditorFormSucceeded'];
        return $form;
Když ale přidám i inputy pro otázku, url a id tak už se neukáží vůbec.
        $form = new Form;
        $form->addHidden('poll_id');
        $form->addGroup('Otázka');
        $form->addText('question', 'Otázka')->setRequired();
        $form->addText('url', 'URL')->setRequired();
        $form->addGroup('answersGroup');
        $answers = $form->addContainer('answers');
        $answers->addText('answers', 'Odpověd');
        $submit = $form->setCurrentGroup(NULL);
        $submit->addSubmit('submit', 'Vytvořit Anketu.');
        $form->onSuccess[] = [$this, 'polleditorFormSucceeded'];
        return $form;
Nemůžu přijít nato proč tam ty inputy pro otázku apod vadí.
Zechy
Profil
piiiiiiiip:
Myslím, že to, co hledáš je (dle příspěvku #2 a #3) Kdyby\Replicator, pokud chceš pracovat s tím, co ti vrátí $form->getValues(), jinak musíš využít třídu Nette\Http\Request, abys dostal vlastní hodnoty z formuláře.

EDIT: Pokud chceš totiž dynamicky přidávat pole formuláře, obstará to za tebe nejlíp Replicator, kdy pak snadno ty pole získáš ve $form->getValues(). Jinak si v Nette vytvoř základ pro formulář, kde v latte obalíš makrem {form} vlastní inputy a ty pak můžeš zpracovat pomocí třídy Nette\Http\Request.
piiiiiiiip
Profil
Jak to nainstaluju?
Nainstaloval jsem to přez composer require kdyby/forms-replicator:@dev
a upravil jsem C:\xampp\htdocs\first-test\app\config\config.neon
na
extensions:
    replicator: Kdyby/Replicator/DI/ReplicatorExtension
a haží mi to chybu.
Class 'Kdyby/Replicator/DI/ReplicatorExtension' not found
Feed
Profil *
Zechy:
Ono jde rozjet i to, co posílal Dan Charousek, stačilo by místo $form->getValues() použít $values = $form->getHttpData($form::DATA_TEXT, 'answers[]');, ale je rozumější použít ten replikátor, mnohem lépe se s tím pracuje (validace a pod).


piiiiiiiip:
Stačí otevřít odkaz "dokumentace" a dostaneš se sem github.com/Kdyby/Replicator/blob/master/docs/en/index.md
Jan Tvrdík
Profil
piiiiiiiip:
Máš obráceně lomítka, správně je to Kdyby\Replicator\DI\ReplicatorExtension
piiiiiiiip
Profil
Feed:
Podle toho jsem postupoval a vyhodilo mi to tu chybu.
Keeehi
Profil
piiiiiiiip:
Tak znovu - Máš obráceně lomítka.

Z té dokumentace je lepší kopírovat, pak bys takovou chybu nemohl udělat.
piiiiiiiip
Profil
Těch lomítek jsem si všímnul, opravit a stále to nefunguje. Pořát ta stejná chyba.
Dan Charousek
Profil
piiiiiiiip:
Pořát ta stejná chyba.
A prozradíš nám o jakou chybu se jedná?
piiiiiiiip
Profil
Dan Charousek:
Už jsem ji sem kopírovall.
piiiiiiiip:
a haží mi to chybu.
Class 'Kdyby/Replicator/DI/ReplicatorExtension' not found
Keeehi
Profil
Pokud se i v chybě nezměnily lomítka, tak jsi to neopravil.
Jan Tvrdík
Profil
piiiiiiiip, Keeehi:
Nebo to dělá na serveru a nesmazal cache.
piiiiiiiip
Profil
Ta lomítka se v té chybě změnila. Vypadá tet takto: Class 'Kdyby\Replicator\DI\ReplicatorExtension' not found.
Cache jsem mazal, nevím jestly správně.
Do routeru jsem vložil.
Environment::get­Cache()->clear();
Feed
Profil *
piiiiiiiip:
Smazat ve složce temp/cache složky a soubory (ručně) ... a jakou verzi používáš?
piiiiiiiip
Profil
Smazání cache nepomohlo. Verzi nette mám Nette-2.3.10.
Tet mi to vypisuje chybu:
Class 'Nette\Loaders\NetteLoader' not found

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: