Nastavení výchozích hodnot formulář pomocí action

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

Dobrý den,
zkoušel jsem si rozchodit dle FAQu měnění hodnot ve formuláři pomocí action, když toto ale použiju, skočí mě laděnka Page not found. Missing template ‚…/templates/Homepage/fooEdit.latte‘, co zde dělám blbě?

<?php
protected function createComponentFooForm($name)
{
    $form = new Nette\Application\AppForm($this, $name);
    $form->addHidden('id');
    $form->addTextArea('text', "Text: ");
    $form->addSubmit('sub', "Uložit");
}

public function actionFooEdit($id)
{
    $this['fooForm']->setDefaults(array('id' => $id, 'text' => 'testovací řetězec'));
}
?>

Template:

<?php
{block content}
{control fooForm}
<br />
<a href="{$presenter->link('fooEdit', 'test')}">Test</a>
?>
japlavaren
Člen | 404
+
0
-

createComponentFooForm nic nevraca, dopis na koniec return $form;

nastavovanie hodnot nemusi byt v acrion, knudne moze byt v render default:

<?php
public function renderDefault()
{
	$this['fooForm']->setDefaults(array(
		'id' => 1,
		'text' => 'testovací řetězec'
	));
}
?>

v action hodnoty nenastavis, pretoze potrebuje vykreslit tu sablonu s formularom (to je ta hlasha, ze chyba)

Editoval japlavaren (24. 5. 2011 12:02)

studna
Člen | 181
+
0
-

Presenter

public function handleFoo()
{
	$this['fooForm']->setDefaults( ... );
}

Šablona

<a n:href="foo!">Set dflts</a>

edit: By snad mohlo fungovat bez šablony.

Editoval studna (24. 5. 2011 12:15)

Filip Procházka
Moderator | 4668
+
0
-

Kdyby jste si projednou tu hlášku dali do translatoru… přeložíme si to spolu jo?

Page not found. Missing template …/templates/Homepage/fooEdit.latte
Stránka nenalezena. Chybí šablona …/templates/Homepage/fooEdit.latte

Zkus teď zapřemýšlet, co by s tím tak mohlo být špatně :)

Bertram
Člen | 75
+
0
-

Vše už bylo napsáno, jen záleží na tom , jak to chceš mít funkčně a podle toho se rozhodnout pro akci, nebo signál.

  • akci musí být přiřazena i šablona
  • signálu ne (zůstává stávající)

Editoval Bertram (24. 5. 2011 12:20)

tatyalien
Člen | 239
+
0
-

setDefaults jinak používám přímo v továrničce, jen jsem zkoušel dle fagu… a nešlo mě to. Takže to asi chodit ani nemá ;)

V handlu to funguje… furt zkouším rozchození dosazení hodnot do formuláře přes ajax (jsem v něm lama) a nějak mě to nešlo, tak jsem to chtěl zkusit takto to pak zajaxovat, ale asi to je taky na nic.

HosipLan Dle hlášky mě bylo jasné, že nemá nahozenou šablonu, ale zkoušel jsem jen to co je psané ve FAQu. Tam o napojení šablony není ani slovo ;)

Editoval tatyalien (24. 5. 2011 12:29)

Patrik Votoček
Člen | 2221
+
0
-

tatyalien napsal(a):

HosipLan Dle hlášky mě bylo jasné, že nemá nahozenou šablonu, ale zkoušel jsem jen to co je psané ve FAQu. Tam o napojení šablony není ani slovo ;)

Tak to je snad jasné (i když evidentně asi ne) že pokud spouštím view / action že k němu potřebuju šablonu pokud neuvedu jinak…

tatyalien
Člen | 239
+
0
-

Patrik Votoček napsal(a):
Tak to je snad jasné (i když evidentně asi ne) že pokud spouštím view / action že k němu potřebuju šablonu pokud neuvedu jinak…

No mě asi ne, jsem hold tady lama na entou. No nic, už to neřešme.

tatyalien
Člen | 239
+
0
-

No nakonec jsem to stejně rozchodil takto:

<?php
protected function createComponentFooForm($name)
{
    $form = new Nette\Application\AppForm($this, $name);
    $form->addTextArea('test_text', "Text: ");
    $form->addSubmit('sub', "Uložit");
    return $form;
}

public function actionFooEdit($hodnota)
{
    $this['fooForm']->setDefaults(array('test_text' => $hodnota));
    $this->invalidateControl('fooTest');
    $this->view = 'default';
}
?>

Template:

<?php
    {snippet fooTest}
    {control fooForm}
    {/snippet}
    Změna hodnoty na test: <a href="{$presenter->link('fooEdit', 'test')}" class="ajax">aaa</a>

?>

Jen ještě nevím jak to nastavi, aby si to udrželo hodnotu, pokud kliknu na jiný požadavek na ajax. (při jiném mě zmizne hodnota „test“).

Editoval tatyalien (24. 5. 2011 13:04)