Vícekrokový formulář
- marek.dusek
- Člen | 99
Ahoj vespolek,
mozna se to tu resilo a ja jen neumim hledat, ale jaka je nette best practice pro vytvareni/obsluhu vicekrokovych formularu? Priklad: v kroku 1 vyplnim udaje, odeslu, server neco vyhodnoti a v kroku 2 mi nabidne dalsi doplneni, pripadne navrat zpet.
Napada me milion variant, jak to resit – at uz proste prelevani dat mezi dvema „obycejnymi“ formulari, ajaxova validace s javascriptove prepnuti nejakych poli, ruzne hidden polozky „step=1“ a ulozeni stavu do session … ale jak to delat nejlip? ;)
Diky za inspiraci.
- marek.dusek
- Člen | 99
A jeste maly offtopic – proc neni v nette nativni podpora pro submity pres button elementy, aby sla delat takova pekna tlacitka, jako ma toto forum, tj. obrazek a text? ;)
- mejla
- Člen | 14
marek.dusek napsal(a):
A jeste maly offtopic – proc neni v nette nativni podpora pro submity pres button elementy, aby sla delat takova pekna tlacitka, jako ma toto forum, tj. obrazek a text? ;)
Jako submit je možné použít:
$form->addImage('save', 'img/ok.png');
tl. typ button není submit a muselo by se řešit nějaké onClick() atd.
pro odeslání formuláře.
Ale jako dobré rešení bych viděl:
$form->addSubmit('save', 'Uložit')->getControlPrototype()->class('anyClass');
/*ve stylech potom:*/
.anyClass{
background: url(../img/ok.png) no-repeat;
padding-left:30px;
}
je to čisté řešení bez tagu img v buttonu.
Editoval mejla (2. 8. 2009 18:04)
- marek.dusek
- Člen | 99
jj, obe dve varianty jsou v poho, ale button a vnoreny img je fajn v tom, ze ti zachova „defaultni“ design tlacitka ala windows, coz jde samozrejme udelat i custom pozadim, ale vis jak ;)
- jasir
- Člen | 746
marek.dusek napsal(a):
jj, obe dve varianty jsou v poho, ale button a vnoreny img je fajn v tom, ze ti zachova „defaultni“ design tlacitka ala windows, coz jde samozrejme udelat i custom pozadim, ale vis jak ;)
Napadlo mě vytvořit si vlastní tlačítko:
<?php
class SmartSubmitButton extends SubmitButton {
public function __construct($caption) {
parent::__construct($caption);
$this->control = Html::el('button');
}
public function getControl() {
$control = parent::getControl();
$control->setType('submit');
$control->setValue('');
$control->setHtml($this->caption);
return $control;
}
}
?>
při vytváření formuláře:
<?php
$button = new SmartSubmitButton(Html::el('strong','Wow')); //jako caption jakýkoli html
$button->onClick[] = array($this,'loginFormSubmitted');
$form['smartbutton'] = $button;
?>
Takto se tlačítko submit renderuje pomocí tagu <button>
a zachovává všechny vlastnosti
standartního SubmitButton
. Snad.
Editoval jasir (2. 8. 2009 22:50)
- David Grudl
- Nette Core | 8227
S BUTTON je (nebo možná býval) problém s detekcí, které tlačítko bylo u vícetlačítkového formuláře stisknuto napříč různými prohlížeči.