Jak vypsat Group ve formuláři

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

Zdravím,
potřeboval bych v šabloně vypsat jen manuálně jen jednu skupinu kompnonent formuláře.
Nevíte Jak na to?

<div id="tabs-dialog" title="Detail Servisáka">
  <ul>
    <li><a href="#b-contact">Osobní údaje a kontakt</a></li>
    <li><a href="#b-onaction">Na Akci</a></li>
    <li><a href="#b-interests">Zájmy</a></li>
    <li><a href="#b-diets">Diety a zdravotní stav</a></li>
  </ul>
  {$form->render('begin')}
  {$form->render('errors')}

  <div id="b-contact">
     Kontakty a obecné udaje
  </div>
  <div id="b-onaction">
    Co vykonává na akci za funkci, v jakém je teamu, kde ho najít, atd..
  </div>
  <div id="b-interests">
    Zájmy, Škola, Práce, do čeho chtěl na akci jít, atd..
  </div>
  <div id="b-diets">
    Diety a zdravotní stav Servisáka
  </div>
  {$form->render('end')}
</div>

do každýho divu potřebuju vypsat jednu skupinu z vygenerovaného formuláře

<?php
   $form->addGroup('contact');

    $form->addText('name', 'Jméno:')
    $form->addText('surname', 'Příjmení:')
    $form->addText('birthnumber', 'Rodné číslo:')
    $form->addText('email', 'E-mail:')
    $form->addText('tel', 'Mobilní Telefon:');

    $form->addGroup('onaction');

    $form->addText('date_arrival', 'Datum příjezdu:')
    $form->addTextarea('note', 'Poznámka při registraci:');
    $form->addTextarea('note_iternal', 'Poznámka interní:');

    $form->addGroup('buttons');

    $form->addSubmit('ok', 'Upravit')
         ->onClick[] = array($this, 'okClicked');
    $form->addSubmit('cancel', 'Zavřít')
         ->setValidationScope(false) // prvek se nebude validovat
         ->onClick[] = array($this, 'cancelClicked');
?>
iguana007
Člen | 970
+
0
-

Třeba tu druhou groupu vyrenderujes takto:

{$form['date_arrival']->label}
{$form['date_arrival']->control}
{$form['note']->label}
{$form['note']->control}
{$form['note_iternal']->label}
{$form['note_iternal']->control}
toka
Člen | 253
+
0
-

Takto to sice jde, ale nešla by vyrenderovat ta skupina jedním, resp. dvěma řádky přímo přes její název? Bohužel to teď nemám jak vyzkoušet.

Mikulas Dite
Člen | 756
+
0
-

Možná funguje

<?php
foreach($form[$groupName]->getControls() as $control){
	//render $control
}
?>

podle API https://api.nette.org/…rmGroup.html by to groupa umět měla.

elektricman
Člen | 29
+
0
-

Mikulas Dite napsal(a):

Možná funguje

<?php
foreach($form[$groupName]->getControls() as $control){
	//render $control
}
?>

podle API https://api.nette.org/…rmGroup.html by to groupa umět měla.

Alias si přepsat reneder :)

Ale díky ;)

Jen mě mrzí že třebas Zend to umí sám o sobě,.. stačí napsat
echo $form->nazev_groupy

Zatím sem si napsal jen jednoduchej skriptík na výpis groupy přes array acces

<?php
$form = array();
       foreach($this['form']->getGroups() as $group) {
        $groupControls = $group->getControls();
        $label = $group->getOption('label');
        $form[$label] = '';
        foreach($groupControls as $control) {
         $form[$label] .= '<p>';
         $form[$label] .= $control->getLabel();
         $form[$label] .= $control->getControl();
         $form[$label] .= '</p>';
        }
       }

       $this->template->form = $form;
?>

vím, že to vypadá strašně, ale funguje to :)

Editoval elektricman (16. 2. 2010 13:05)