Renderování části formuláře pomocí renderPair

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Ot@s
Backer | 476
+
0
-

Mám klasický Nette formulář:

$form = new Nette\Forms\Form;
$f = $form->addTextarea('note', 'Poznamka', 70,3);

Nyní bych potřeboval vyrendrovat HTML prvku note (tj. wrapper pro pair), tj. neco v duchu (což samozřejmě nefunguje):

$renderer = $form->getRenderer();
echo $renderer->renderPair($f);

Díky za jakékoliv nakopnutí.

22
Člen | 1478
+
0
-

examples v distribuci – manual rendering

Ot@s
Backer | 476
+
0
-

22 napsal(a):

examples v distribuci – manual rendering

GREPováním jsem žádné použití fce renderPair nenašel. Asi jsi nepochopil, co chci…

To, že můžu získat tělo formuláře pomocí $form->render(‚body‘) vím. Dokonce tím, že do formuláře vložím jen jeden prvek a nastavováním wrappers ($renderer->wrappers[‚controls‘][‚container‘] = null) získám onu HTML konstrukci jednoho formulářového prvku. Jen mi to přijde nehygienické.

Otázka má znít asi úplně jinak. Rád bych viděl funkční aplikci fce. renderPair. Díky.

22
Člen | 1478
+
0
-

já myslel, že ti jde o:

...
{$form['note']->label}{$form['note']->control}
...

Editoval 22 (10. 5. 2011 17:45)

Ot@s
Backer | 476
+
0
-

22 napsal(a):

já myslel, že ti jde o:

...
{$form['note']->label}{$form['note']->control}
...

Já právě potřebuju HTML celé konstrukce tohoto páru. Tj. něco jako

$form = new Nette\Forms\Form;
$f = $form->addText('name', 'popis');
echo $form->renderPair( $f ); // nechodi
echo $form->renderPair( $f->getControll() ); // nechodi
echo $form->renderPair( $form['name'] ); // nechodi

Samotna fce. renderPair chce potomka IFormControl. Nerozumim tomu :-(

Editoval Ot@s (10. 5. 2011 18:29)

Patrik Votoček
Člen | 2221
+
0
-

V první řadě nic jako Nette\Forms\Form::renderPair není. Je to Nette\Forms\Form::getRenderer()->renderPair($control).

$form = new Nette\Forms\Form;
$form->addText('name', 'popis');

$renderer = $form->getRenderer();

$renderer->renderPair($form->getControl('name'));
$renderer->renderPair($form['name']); // je alias pro předchozí

Co to znamená nechodí?