Live Form Validation

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

Dobrý večer, stáhl jsem si toto, a pořád mi to nejde implementovat hlásí mi to že třída nebyla nalezena.. Už nevím, kam ty soubory strčit :-(

"":http://s2.imgupload.cz/…LG8/live.JPG
Díky za rady :-)

Acnnair
Člen | 34
+
0
-

Zmazal si temp?

Jack06
Člen | 168
+
0
-

Jo tak v tom byl zakopanej pes aha :-D Díky nějak jsem nevěděl že se to musí smáznout :-D

ještě jeden dotaz, hlásí mi to chybu:
"":http://s1.imgupload.cz/…TJ/live2.JPG

Editoval Jack06 (18. 2. 2010 22:10)

redhead
Člen | 1313
+
0
-

formulář musíš pojmenovat:

new BaseForm($this, "mujFormular");

btw: jak ten formulář vytváříš? V továrničce?? By se měl pojmenovat sám.. divné

EDIT: ještě bys sis měl přečíst dokumentaci k LV, ty nastavení se „zobrazMojeFunkce“, atd. nebudou nejspíš fungovat, protože taková funkce neexistuje pokud sis nepřepsal javascriptovej soubor. Pokud nebudeš používat vlastní řešení, to nastavení s funkcemi vymaž, a v layoutu načítej do script tagu ten javascript co je v zipu.

PS: nebylo nutné zakládat nové téma, ještě takhle špatně pojmenované, protože to není přímo o LV ale o řešení problému s ní..

Editoval redhead (18. 2. 2010 22:19)

Acnnair
Člen | 34
+
0
-

No čo som ich ja robil v továrničke, tak sa mi samé nepomenovali. Na webe to generovalo .validateControl(this); namiesto mojForm.validateControl(this);. Po pomenovaní to už všetko ide. :-)

Jack06
Člen | 168
+
0
-

Používám:

<?php
class BaseForm extends AppForm
{
    public function __construct(IComponentContainer $parent = null, $name = null)
    {
        parent::__construct($parent, $name);
        $script = new LiveClientScript($this);
        $this->getRenderer()->setClientScript($script);
    }
}
?>

K rozběhání předchozí chyby jsem opravdu musel pojmenovat form

řešení:

<?php
require_once dirname(__FILE__) . "/BasePresenter.php";

class RegistrationPresenter extends BasePresenter {


	protected function createComponentLoginForm()
	{
		$form = new BaseForm($this, "regForm");;
		$form->addText('email', 'E-mail:')
			->addRule(Form::EMAIL, 'Emailová adresa není platná.');
		$form->addPassword('answere', 'Odpověď:');

		$form->addSubmit('reg', 'Registrovat');


		return $form;
	}
}
?>

Napojmenuje se sám

Editoval Jack06 (19. 2. 2010 11:09)

Aurielle
Člen | 1281
+
0
-

Stačí používat

function createComponentLoginForm($name)
{
	$form = new AppForm($this, $name);
	//...
}

Editoval gmvasek (19. 2. 2010 8:43)

Jack06
Člen | 168
+
0
-

To mi to nezautomatizuje ten live form validation..

Acnnair
Člen | 34
+
0
-

Ako písal gmvasek, namiesto AppForm použi ten svoj form, BaseForm. Myslím že by to malo fungovať.

<?php
function createComponentLoginForm($name)
{
        $form = new BaseForm($this, $name);
        //...
}
?>
Panda
Člen | 569
+
0
-

Nebude lepší spíš použít opravenou verzi LiveClientScript? https://forum.nette.org/…iewtopic.php?….

Jack06
Člen | 168
+
0
-

Mno ta opravená mi pak hází nějaké chyby.. viz s neupravenou verzí jsem to rozchodil pomocí $name vi příspěvek od Acnnair

Jak tedy budu volat výše uvedený přiklad komponenty s upravenou verzí?

Acnnair
Člen | 34
+
0
-

Panda – tú som veru ešte neskúšal
Jack06 – klasicky, {control mojForm}

Panda
Člen | 569
+
0
-

Pardon, omylem jsem zabalil a vytvořil patch pro jinou úpravu, než jsem zkoušel v aplikaci. Teď už by to mělo být OK (aktualizoval jsem původní soubor).

Jack06
Člen | 168
+
0
-

A jaký je rozdíl kdybych to volal: {widget mojForm}

Panda
Člen | 569
+
0
-