Validácia formulára ERROR Method Nette\Utils\Html::__toString()

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

Dobrý deň pri tvorbe formulára sa vyskytla chyby s hláškou Method Nette\Utils\Html::__toString() must not throw an exception pri pridaní validácie a vypísaného textu Zadejte prosím jméno setRequired(‚Zadejte prosím jméno‘); V Nette začínam preto poprosím o radu ako chybu opraviť. Ďakujem

<?php

namespace App\Presenters;

use Nette;
use App\Model;
use Nette\Application\UI;


class HomepagePresenter extends BasePresenter
{
    protected function createComponentRegistrationForm()
    {
        $form = new UI\Form;
        $form->addText('name', 'Jméno:')->setRequired('Zadejte prosím jméno');
        $form->addPassword('password', 'Heslo:');
        $form->addSubmit('login', 'Registrovat');
        $form->onSuccess[] = array($this, 'registrationFormSucceeded');
        return $form;
    }

    // volá se po úspěšném odeslání formuláře
    public function registrationFormSucceeded(UI\Form $form, $values)
    {
        // ...
        $this->flashMessage('Byl jste úspěšně registrován.');
        $this->redirect('Homepage:');
    }
}
Casper
Člen | 253
+
0
-

Máš zdrojový soubor v UTF-8? Viz issue.

kasiopia
Člen | 69
+
0
-

Ďakujem tu bola chyba

kasiopia
Člen | 69
+
0
-

keď som pridal $form->addText(‚age‘, ‚Vek:‘)
->addRule(Form::INTEGER, ‚Vek musi byt cislo‘)
->addRule(Form::RANGE, ‚Vek musi byt od 18 do 120‘, array(18, 120));

vypisuje mi chybu Class ‚App\Presenters\Form‘ not found Ďakujem za pomoc

<?php

namespace App\Presenters;

use Nette;
use App\Model;
use Nette\Application\UI;


class HomepagePresenter extends BasePresenter
{
    protected function createComponentRegistrationForm()
    {
        $form = new UI\Form;
        $form->addText('name', 'Jméno:')->setRequired('Zadejte prosim jmeno');
        $form->addPassword('password', 'Heslo:')->setRequired('Zadejte prosim heslo');
        $form->addText('age', 'Vek:')
    ->addRule(Form::INTEGER, 'Vek musi byt cislo')
    ->addRule(Form::RANGE, 'Vek musi byt od 18 do 120', array(18, 120));
        $form->addSubmit('login', 'Registrovat');
        $form->onSuccess[] = array($this, 'registrationFormSucceeded');
        return $form;
    }

    // volá se po úspěšném odeslání formuláře
    public function registrationFormSucceeded(UI\Form $form, $values)
    {
        // ...
        $this->flashMessage('Byl jste úspěšně registrován.');
        $this->redirect('Homepage:');
    }
}
Pavel Kravčík
Člen | 1205
+
+1
-
  1. Formátuj prosím kód.
  2. Přečti si něco o namespace (http://php.vrana.cz/…-php-5-3.php)
  3. Přidej use Nette\Application\UI\Form; a mělo by jít nebo dole přepiš Form na UI\Form
Mysteria
Člen | 797
+
0
-

Změň Form::INTEGER na UI\Form::INTEGER (a podobně i u dalších pravidel) a prostuduj si jmenné prostory.

kasiopia
Člen | 69
+
0
-

Dobrý deň mohol by mi niekto poradiť pri vytvorení odoslania jednoduchého formulára? Chcel len vedieť čo by malo byť v presentere a modelu. Ďakujem veľmi pekne za pomoc, som začiatočník ale nette je super:)

    protected function createComponentContactForm()
    {
        $form = new UI\Form;
        $form->addText('name', 'Jméno:')->setRequired('Zadejte prosim jmeno');
        $form->addText('lastname', 'tel:')->setRequired('Zadejte prosim priezvisko');
        $form->addTextArea('note', 'Poznámka:')->setRequired('Zadejte spravu');
        $form->addSubmit('send', 'odoslat');
        $form->onSuccess[] = array($this, 'registrationFormfull');
        return $form;
    }
        public function registrationFormfull(UI\Form $form, $values)
    {
        // ...
        $this->flashMessage('Byl jste úspěšně registrován.');
        $this->redirect('Homepage:');
    }