Jedna otázka na formuláře
- natlaid
- Člen | 18
Dobrý den,
Mám dotaz ohledně formulářů. Chci aby mi Nette vygenerovalo něco
takovéhoto:
<th><label for="frm-number">Váš Telefon:</label></th>
<td><select><option>+420</option><option>+421</option></select><input type="text" size="20" class="text" name="number" id="frm-number" value="" /></td>
Doufám, že to jde, ale nic mě nenapadlo, děkuji předem
- Bernard Williams
- Člen | 207
Nazdárek,
máš na mysli něco takového?
{$form->render('begin')}
{$form->render('errors')}
<table>
<tr><th>{$form['telefon']->getlabel()}</th></tr>
<tr><td>{$form['predcisli']->getcontrol()}{$form['number']->getcontrol()}</td></tr>
</table>
{$form->render('end')}
Bernard
Editoval Bernard Williams (21. 4. 2010 18:57)
- natlaid
- Člen | 18
Bernard Williams napsal(a):
Nazdárek,
máš na mysli něco takového?
{$form->render('begin')} {$form->render('errors')} <table> <tr><th>{$form['telefon']->getlabel()}</th></tr> <tr><td>{$form['predcisli']->getcontrol()}{$form['number']->getcontrol()}</td></tr> </table> {$form->render('end')}
Bernard
No, to je ono, ale nevím jak to nechat vygenerovat přes objekt Form, pokud chápete jak to myslím…
- Bernard Williams
- Člen | 207
V presenteru si nadefinuješ komponentu s názvem třeba Telefon:
protected function createComponentTelefon($name) {
$form = new AppForm($this, $name);
$predcisli = array(420 => '+420', 421 => '+421');
$renderer = $form->getRenderer();
$renderer->wrappers['label']['suffix'] = ':';
$form->addSelect('predcisli', 'Předčíslí', $predcisli)
->addRule(Form::FILLED, 'Musíte vybrat předčíslí.');
$form->addText('number', 'Váš Telefon')
->addRule(Form::FILLED, 'Musíte vyplnit tel. číslo.');
$form->addSubmit('submit', 'Submit');
$form->onSubmit[] = array($this, 'TelefonOnFormSubmitted');
}
V daném renderu si komponentu zavoláš a předáš šabloně:
public function renderNazevAkce () {
$form = $this->getComponent('telefon');
$this->template->form = $form;
}
a v šabloně to už vykreslíš:
{$form->render('begin')}
{$form->render('errors')}
<table>
<tr><th>{$form['number']->getlabel()}</th></tr>
<tr><td>{$form['predcisli']->getcontrol()}{$form['number']->getcontrol()}</td></tr>
<tr><td>{$form['submit']->getcontrol()}</td></tr>
</table>
{$form->render('end')}
- natlaid
- Člen | 18
Bernard Williams napsal(a):
V presenteru si nadefinuješ komponentu s názvem třeba Telefon:
protected function createComponentTelefon($name) { $form = new AppForm($this, $name); $predcisli = array(420 => '+420', 421 => '+421'); $renderer = $form->getRenderer(); $renderer->wrappers['label']['suffix'] = ':'; $form->addSelect('predcisli', 'Předčíslí', $predcisli) ->addRule(Form::FILLED, 'Musíte vybrat předčíslí.'); $form->addText('number', 'Váš Telefon') ->addRule(Form::FILLED, 'Musíte vyplnit tel. číslo.'); $form->addSubmit('submit', 'Submit'); $form->onSubmit[] = array($this, 'TelefonOnFormSubmitted'); }
V daném renderu si komponentu zavoláš a předáš šabloně:
public function renderNazevAkce () { $form = $this->getComponent('telefon'); $this->template->form = $form; }
a v šabloně to už vykreslíš:
{$form->render('begin')} {$form->render('errors')} <table> <tr><th>{$form['number']->getlabel()}</th></tr> <tr><td>{$form['predcisli']->getcontrol()}{$form['number']->getcontrol()}</td></tr> <tr><td>{$form['submit']->getcontrol()}</td></tr> </table> {$form->render('end')}
A nešlo by to jenom vygenerovat, přes objekt Form?
Jinak Form používám přes Nette
- Bernard Williams
- Člen | 207
natlaid napsal(a):
A nešlo by to jenom vygenerovat, přes objekt Form?
Jinak Form používám přes Nette
Tím si nejsem úplně tak jist.. ale bojím se, že to nepůjde.. Zkus zkoušet.