Validace – ověření shodnosti hesla a potvrzení hesla

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

Prolezl jsem dokumentaci i fórum a poskládal jsem dokupy tohle:

<?php


require_once dirname(__FILE__) . '/BasePresenter.php';


class RegisterPresenter extends BasePresenter
{
	public function renderDefault()

	{
		$this->template->form = $this['form'];
	}
	protected function createComponentForm($name)
	{
		$form = new AppForm($this, $name);

		$form->addGroup();
		$form->addText('jmeno', 'Jméno:', 32)
			->addRule(Form::FILLED, 'Zadejte jméno.');

		$form->addText('prijmeni', 'Příjmení:', 32)
			->addRule(Form::FILLED, 'Zadejte příjmení.');

		$form->addText('email', 'Email:', 35)
			->addCondition(Form::FILLED)
			->addRule(Form::EMAIL, 'Zadali jste neplatný email.');

		$form->addPassword('heslo', 'Heslo:');

		$form->addPassword('hesloCheck', 'Potvrzení hesla:')
			->addConditionOn($form->getComponent('heslo'), Form::EQUAL, FALSE, 'Udělali jste chybu při potvrzení hesla.');

		$form->addGroup();
		$form->addSubmit('submit1', 'Registrovat se')->onClick[] = array($this, 'okClicked');

		return $form;
	}

	public function okClicked(SubmitButton $form)
	{

		$values = $form->form->getValues();



		// this is the end, my friend :-)

		if (empty($disableExit)) exit;
	}


}
?>

Potřebuji aby při špatném zadání vyskočilo okno s hláškou že bylo zadáno špatně. Bere mi to ovšem všechno a nevypíše nic..
Děkuju za každou radu

Editoval pjoter (22. 8. 2009 18:48)

Foowie
Člen | 269
+
0
-

Já mám v projektu něco takového:

<?php
$form->addPassword("password", "Heslo: *")
	->addRule(Form::FILLED, "Heslo musí být vyplněné !");
$form->addPassword("confirm_password", "Znovu heslo: *")
	->addRule(Form::FILLED, "Potvrzovací heslo musí být vyplněné !")
	->addConditionOn($form["password"], Form::FILLED)
		->addRule(Form::EQUAL, "Hesla se musí shodovat !", $form["password"]);
?>
pjoter
Člen | 118
+
0
-

Díky to je přesně co jsem potřeboval. Ještě se trápím s captchou – pořád mi to píše :
Call to undefined method AppForm::addCaptcha().

Jan Tvrdík
Nette guru | 2595
+
0
-

A máš ji načtenou? Zkus RobotLoader::load('Captcha');

kravčo
Člen | 721
+
0
-

jasir napsal(a):

Sakra, deja-vu…

nj.

pjoter
Člen | 118
+
0
-

Jan Tvrdík napsal(a):

A máš ji načtenou? Zkus RobotLoader::load('Captcha');

kde to mam hodit do bootstrap nebo do presenteru ?

Editoval pjoter (22. 8. 2009 22:55)

Honza Kuchař
Člen | 1662
+
0
-

Zalezi jestli to chceš použit v cele aplikaci nebo jenom v jednom presenteru

pjoter
Člen | 118
+
0
-

Mam to takhle ale porad stejna chyba

<?php


require_once dirname(__FILE__) . '/BasePresenter.php';


class RegisterPresenter extends BasePresenter
{
	public function renderDefault()

	{
		$this->template->form = $this['form'];
	}
	protected function createComponentForm($name)
	{
		RobotLoader::load('Captcha');
		//Form::extensionMethod('addCaptcha', array('Captcha', 'addCaptcha'));

		$form = new AppForm($this, $name);

		$form->addGroup();
		$form->addText('jmeno', 'Jméno:', 32)
			->addRule(Form::FILLED, 'Zadejte jméno.');

		$form->addText('prijmeni', 'Příjmení:', 32)
			->addRule(Form::FILLED, 'Zadejte příjmení.');

		$form->addText('email', 'Email:', 35)
			->addCondition(Form::FILLED)
			->addRule(Form::EMAIL, 'Zadali jste neplatný email.');

		$form->addPassword('heslo', 'Heslo:')
			->addRule(Form::FILLED, 'Zadejte heslo.');

		$form->addPassword('hesloCheck', 'Potvrzení hesla:')
			->addRule(Form::FILLED, "Zadejte potvrzovací heslo.")
				->addConditionOn($form["hesloCheck"], Form::FILLED)
					->addRule(Form::EQUAL, "Hesla se musí shodovat !", $form["heslo"]);


		$form->addCaptcha('captcha', 'Antispam')
                        ->setTextColor(Image::rgb(255, 0, 0))
                       ->addRule(Form::VALID, 'Opište správně písmena z obrázku.');


		$form->addGroup();
		$form->addSubmit('submit1', 'Registrovat se')->onClick[] = array($this, 'okClicked');

		return $form;
	}

	public function okClicked(SubmitButton $form)
	{

		$values = $form->form->getValues();



		// this is the end, my friend :-)

		if (empty($disableExit)) exit;
	}


}
?>
kravčo
Člen | 721
+
0
-

pjoter napsal(a):

if (empty($disableExit)) exit;

Tento riadok tam má akú funkciu?

jasir
Člen | 746
+
0
-

kravčo napsal(a):

pjoter napsal(a):

if (empty($disableExit)) exit;

Tento riadok tam má akú funkciu?

Možná je to nesmrtelné kurvítko ;-)

Editoval jasir (23. 8. 2009 17:33)

rokerkony
Člen | 122
+
0
-

me pomohlo zavolani
class_exists('Captcha');

mam to takhle:

class_exists('Captcha');	// tohle inicializuje tridu captcha :)

$form = new AppForm($this, 'guestBookForm');
$captcha = new Captcha('bookCaptcha');
$form['captcha'] = $captcha;
$form['captcha']->setTextColor(Image::rgb(255, 0, 0))
		->addRule(Form::VALID, 'Opište správná písmena z obrázku.');
pjoter
Člen | 118
+
0
-

uz jsem to vyresil pridal jsem do bootstrap.php
<?php require LIBS_DIR . ‚/Nette.Extras/Captcha/Captcha.php‘; ?>
coz v popisu instalace chybi