Formuláře a addRule hlasí App\Form not found

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

v presenteru mám

	protected function createComponentPostRecord()
	{
		$form = new Nette\Application\UI\Form;
	    $form->addText('title', 'Titulek:')
	        ->setRequired();
	    $form->addTextArea('content', 'Popis:')
	        ->setRequired();
	    $form->addTextArea('adress', 'Adresa:')
	        ->setRequired();
	    $form->addText('url', 'Adresa webu:')->addRule(Form::URL, 'Zadejte url webu ve správném formátu');
	    $form->addText('email', 'Zadejte email:')->addRule($form::EMAIL, 'Zadali jste neplatný email.')->setRequired();
	    $form->addTextArea('telefon', 'Telefon:')
	        ->setRequired();
$form->addSelect('category','Kategorie:',$this->recordFacade->getCatbyId());

	    $form->addSubmit('send', 'Uložit');
	    $form->onSuccess[] = $this->postRecordSucceeded;

	    return $form;
	}

vykreslení skončí chybou Class ‚App\Form‘ not found na řádku

$form->addText('url', 'Adresa webu:')->addRule(Form::URL, 'Zadejte url webu ve správném formátu');

pokud ovšem opravím na

$form->addText('url', 'Adresa webu:')->addRule($form::URL, 'Zadejte url webu ve správném formátu');

již se form vykreslí, pro opravu chyby Class ‚App\Form‘ not found mi ani mepomohlo

use \Nette\Form;

trochu se vtom asi plácám v dokumentaci je

use Nette\Forms\Form;

$form = new Form;

ale v quickstartu je

$form = new Nette\Application\UI\Form;
David Grudl
Nette Core | 8228
+
0
-

Zkus místo Form::XYZ použít $form::XYZ.

Robyer
Člen | 74
+
0
-

mardon napsal(a):
trochu se vtom asi plácám v dokumentaci je

use Nette\Forms\Form;

$form = new Form;

ale v quickstartu je

$form = new Nette\Application\UI\Form;
use Nette\Application\UI\form;

je pro použití v nette aplikaci s presentery. To druhé (Nette\Forms\Form) je pro samostatné použití formulářů v aplikaci bez Nette presenterů.

Editoval Robyer (28. 12. 2013 18:33)

mardon
Člen | 59
+
0
-

Aha takže pokud použiji tak jak jsem si otestovala, že mi to funguje tedy:

protected function createComponentPostRecord()
{
    $form = new Nette\Application\UI\Form;
    $form->addText('title', 'Titulek:')
        ->setRequired();
    $form->addTextArea('content', 'Popis:')
        ->setRequired();
    $form->addTextArea('adress', 'Adresa:')
        ->setRequired();
    $form->addText('url', 'Adresa webu:')->addRule($form::URL, 'Zadejte url webu ve správném formátu');
    $form->addText('email', 'Zadejte email:')->addRule($form::EMAIL, 'Zadali jste neplatný email.')->setRequired();
    $form->addTextArea('telefon', 'Telefon:')
        ->setRequired();
    $form->addSelect('category','Kategorie:',$this->recordFacade->getCatbyId());

    $form->addSubmit('send', 'Uložit');
    $form->onSuccess[] = $this->postRecordSucceeded;

    return $form;
}

je to správně, mě trochu zmátla ta dokumentace