Vícekrokový formulář

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

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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.