Ignorace validationScope bez použití redirectu

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

2.0-beta ze dne 28. 05. 2011
Je žádané chování, aby takto vytvořený formulář hlásil chybu, pokud se nevyplní nic do kolonky „text“?

public function createComponentForm($name) {
	$form = new Form($this, $name);
	$form->addText("text", "Text")->addRule(Form::FILLED, "Filled !");
	$form->addSubmit("submitButton", "Submit !")->setValidationScope(false);
	return $form;
}

Edit: chybou bylo myšleno, že se na stránce vypíše „Filled !“ ve form-errors, ikdyž javascript alert nehlásí.

Editoval Foowie (12. 6. 2011 13:08)

Filip Procházka
Moderator | 4668
+
0
-

Ano,
je ovšem žádané aby se zavolal callback

$form->addSubmit("submitButton", "Submit !")
	->setValidationScope(FALSE) // klidně i nevalidní, ale pouze toto tlačítko
	->onClick[] = callback($this, ...);

onSubmit ani nově onSuccess by se ale při chybě volat neměl.

PS: pozor, takovému callbacku se nepředává Nette\Forms\Form ale Nette\Forms\Controls\SubmitButton.

Taky vám nefunguje na fóru [api:třída] ?Ha, funguje [[api:trida]] :)

Editoval HosipLan (13. 6. 2011 13:27)

David Grudl
Nette Core | 8139
+
0
-

Podle mého by button měl mít taky nějaké onSuccess, jen si nejsem jistý tímto názvem.

Na fóru je třeba závorky zdvojit, s jednoduchýma bylo moc problémů.

rixi
Člen | 109
+
0
-

Nette Framework 2.0-beta 1aae612 released on 2011–06–27

CD-Collection sa formulare validuju aj pri stlacani Cancel. Je toto chovanie v poriadku?

22
Člen | 1478
+
0
-

je to polámané, ani Hosiplanův postup na to nezabere, navíc jen tam i špatný config.neon:
správně:

#
# SECURITY WARNING: it is CRITICAL that this file & directory are NOT accessible directly via a web browser!
# https://nette.org/en/security-warning
#
common:
	php:
		date.timezone: Europe/Prague

	services:
		robotLoader:
			run: true

		database:
			class: Nette\Database\Connection
			arguments: ['sqlite2:%appDir%/models/demo.db']

		model:
			class: Model
			arguments: ['@database']

		authenticator:
			factory: ['@model', 'createAuthenticatorService']


production < common:

development < common:

Editoval 22 (29. 6. 2011 20:18)

22
Člen | 1478
+
0
-

… funguje to jedíně takto:

	protected function createComponentAlbumForm()
	{
		$form = new Form;
		$form->addText('artist', 'Artist:')
			->setRequired('Please enter an artist.');

		$form->addText('title', 'Title:')
			->setRequired('Please enter a title.');

		$form->addSubmit('save', 'Save')->setAttribute('class', 'default');
		$form->addSubmit('cancel', 'Cancel')
		->setValidationScope(FALSE)
		->onClick[] = callback($this, 'aa');
		$form->onSuccess[] = callback($this, 'albumFormSubmitted');

		$form->addProtection('Please submit this form again (security token has expired).');
		return $form;
	}

	public function aa()
	{
		$this->redirect('Dashboard:');
	}

Editoval 22 (1. 7. 2011 12:21)

David Grudl
Nette Core | 8139
+
0
-

fixed