Formulare

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

Ahoj nedari se me zprovoznit nasledujici kod z best practices.

Evidentne prehlizim nejakou blbost, jen nevim kde.
Zkousel jsem misto AppForm davat jen Form, ale to naprosto ignoruje ty callbacky a nevyplni to action ve formulari.
(Pokud mu to nevyplnim pres setAction() – to je celkem logicke).

Zkousel jsem davat AppForm do defaultPresenteru, ale to me hodilo exceptionu
s tim, ze mam spatne Signal…

AppForm bez argumentu nedela nic. Hadam to same jako s Form viz vys.

Zkousel jsem i posledni verzi 99 predtim 78 a to same.

Neco delam spatne, akorat nemuzu na foru najit co…
Normalni submit a isSubmited na tom samem formulari chodi bezproblemu.
Diky za shovivavost, nejak me dosli napady.

Sem nekam jsem se dostal nejdal.

Warning: call_user_func_array() [function.call-user-func-array]:
 First argument is expected to be a valid callback, 'CancelClicked'
 was given in D:\htdocs\formtest\libs\Nette\Object.php on line 127

V sablone mam.

{$form->render()}

V presenteru

<?php
class FormPresenter extends BasePresenter
{
	public function startup()
	{
		$form = new AppForm($this,"form");
		$form->addText('name', 'Your name:');
		$form->addSubmit('ok', 'Send')
		->onClick[] = 'OkClicked'; // nebo 'OkClickHandler'
		$form->addSubmit('cancel', 'Cancel')
		->setValidationScope(FALSE)
		->onClick[] = 'CancelClicked'; // nebo 'CancelClickHandler'
		// alternativa:
		$form->onSubmit[] = 'FormSubmitted'; // nebo 'FormSubmitHandler'

		$this->template->form = $form;
		$this->template->title = 'FORMTEST';

	}
	// obslužné handlery:
	function OkClicked(SubmitButton $button)
	{
		echo "ok";
	}

	function CancelClicked(SubmitButton $button)
	{
		echo "cancel";
	}

	function FormSubmitted(Form $form)
	{
		echo "submited";
	}
}
?>
David Grudl
Nette Core | 8218
+
0
-

Tam musí PHP callback, to znamená ...->onClick[] = array($this, 'CancelClicked');

Doplním to do Best practice.