ScaffoldingRenderer – ako to funguje?

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

Dobry den,

snazim sa zistit ako spravit manualne vykreslovanie formularov, bohuzial nedari sa mi naist ziaden priklad ani navod. Dokonca ani google mi nepomohol. Pochopil som, ze formular sa manualne zostavi a potom sa donho doplni $form->setRenderer(new ScaffoldingRenderer);. Vypise mi to kod, ale co dalej netusim. Kam mam vypisany kod vlozit aby to fungovalo.

Dakujem

pekelnik
Člen | 462
+
0
-

chce to lepší dotaz :)

Jan Endel
Člen | 1016
+
0
-

základ je takovýto:

Presenter:

$form = $this->getComponent('nazevKomponenty');

Šablona (napriklad):

{widget nazevKomponenty begin}
{widget nazevKomponenty error}
<ul>
	<li>{$form['name']->label}:{$form['name']->control}</li>
</ul>
{widget nazevKomponenty end}

jinac je to celkem dobre popsane Ondrou v Chybny Rule Lenght

japlavaren
Člen | 404
+
0
-

Zdravim,

nieco som pochopil, ale stale som zmeteny – v presentery mam kod:

<?php
function createComponentAddForm()
  {
    $form = $this->getComponent('formular');
    $form->addText('email', 'E-mail')
	    ->addRule(Form::FILLED, 'Zadajte e-mail')
	    ->addRule(Form::EMAIL, 'E-mail je neplatný');
    $form->addText('nadpis', 'Nadpis')
	    ->addRule(Form::FILLED, 'Zadajte nadpis');
    $form->addTextarea('otazka', 'Otázka')
	    ->addRule(Form::FILLED, 'Zadajte otázku');
    $form->addSubmit('pridatOtazku', 'Pridať otázku');
    $form->onSubmit[] = callback($this, 'formAddQuestion');
    return $form;
  }
?>

v sablone

{widget formular begin}
  {widget formular errors}

{!$form->render('begin')}
  {!$form->render('errors')}

<table>
<tr class="required">
	<th>{!$form['email']->label}</th>

	<td>{!$form['email']->control}</td>
</tr>

<tr class="required">
	<th>{!$form['nadpis']->label}</th>

	<td>{!$form['nadpis']->control}</td>
</tr>

<tr class="required">
	<th>{!$form['otazka']->label}</th>

	<td>{!$form['otazka']->control}</td>
</tr>

<tr>
	<th>&nbsp;</th>

	<td>{!$form['pridatOtazku']->control}</td>
</tr>
</table>

{!$form->render('end')}

{widget formular end}
hadze to chybu 	**Component with name 'nazevKomponenty' does not exist**, samemu mi pride ten kod dost zvlastny. dajte mi prosim niekto priklad ako to ma byt. Dakujem

Editoval japlavaren (22. 3. 2010 14:16)

Jan Endel
Člen | 1016
+
0
-

jak prirazujes ten form do template ?

potazmo mel bys mit misto {widget formular begin} {widget addForm begin} ale to predpokladam mas :).

Ondřej Mirtes
Člen | 1536
+
0
-

V té továrničce addForm bych místo toho prvního řádku dal toto:

$form = $this->createComponentFormular();
japlavaren
Člen | 404
+
0
-

mozete mi prosim niekto napisat a idealne upnut vzorovy priklad ako to funguje. uz som z toho zufaly