Manualní render formuláře

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

Ahoj! Bežně se mi všechno v pořádku vykresluje, ale jakmile chci v template místo

<?php
{control selectImage}
?>

použít něco ve stylu

<?php
{$form->render('begin')}
...
{$form->render('end')}
?>

tak se mi vypisuje jenom

<form action="" method="post">...</form>

Do renderu komponenty sem přidal

<?php
$template->form = $this->createComponentSelectImage();
?>

Předpokládám, že form vytvářím ve špatný čas :S Jak je to prosím „správně“?

Editoval Mikulas Dite (16. 12. 2009 20:10)

redhead
Člen | 1313
+
0
-

a renderuješ ty controly mezi operacemi ‚begin‘ a ‚end‘?? Jestli ne tak se ti vykreslí pouze <form …> (begin) a </form> (end)

Mikulas Dite
Člen | 756
+
0
-

To je jasný, mě de o to, že místo něčeho ve stylu

<form action="web_repo/?do=selectImage-submit" method="post">

mi vrací tag s prázdnou „action“

Edit:
Aha, když použiju továrničku dobře, tak funguje xD

<?php
$template->form = $this['selectImage'];
?>

Editoval Mikulas Dite (16. 12. 2009 20:29)

redhead
Člen | 1313
+
0
-
$template->form = $this['selectImage'];

je určitě lepší než to volání $this->createComponentSelectImage();

Zkus ještě v šabloně použít {control selectImage ‚begin‘} a {control selectImage ‚end‘} místo toho $form->…

Mikulas Dite
Člen | 756
+
0
-

Díky, ale použiju {$form->render(‚begin‘)} což zlepší přehlednost líp.

Cifro
Člen | 245
+
0
-

Budem pokračovať v tomto vlákne.

Ako môžem manuálne vykresliť chyby pod jednotlivými inputami a nastaviť triedu error na input?

Form vykresľujem takto

<p>
{$control['loginForm']['password']->label}
{$control['loginForm']['password']->control} {* pri chybe by sa mala na input nastaviť trieda error *}
{*
   A tu by som potreboval chybu vypisať ak je niejaká, ktorá patrí tomuto prvku
*}
</p>

Editoval Cifro (23. 1. 2010 20:58)

Klokan
Člen | 47
+
0
-

Namísto <?php $template->form = $this[‚selectImage‘]; ?> lze použít i <?php $template->form = $this->getComponent(‚selectImage‘); ?>. To jen tak pro upřesnění k předchozímu až to bude někdo dohledávat.

PetrP
Člen | 587
+
0
-

Cifro napsal(a):

Ako môžem manuálne vykresliť chyby pod jednotlivými inputami a nastaviť triedu error na input?

Když používáš ConventionalRenderer tak ke controlům budeš vypisovat chyby nastavením prílušného wraperu:

$form->renderer->wrappers['controls']['errors'] = true;

Při ručním renderování by sis mohl rendererem pomoct také:

{$control['loginForm']['password']->control}
{$control['loginForm']->renderer->renderErrors($control['loginForm']['password'])}

Cifro napsal(a):

Budem pokračovať v tomto vlákne.

Tohle je pěkná hloupost, raději založ nové adekvátní téma. Z několika důvodu:

  • Může ho najít nováček.
  • Větší pravděpodobnost že si ho někdo všimne a odpoví ti.
  • Když ti chci odpovědět tak jsem nejdřív musel přečíst předešlé příspěvky, abych zjistil že se tvého dotazu netýkají !!!