Validácia formulára ERROR Method Nette\Utils\Html::__toString()
- kasiopia
- Člen | 69
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:');
}
}
- kasiopia
- Člen | 69
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
- Formátuj prosím kód.
- Přečti si něco o namespace (http://php.vrana.cz/…-php-5-3.php)
- Přidej
use Nette\Application\UI\Form;
a mělo by jít nebo dole přepišForm
naUI\Form
- Mysteria
- Člen | 797
Změň Form::INTEGER na UI\Form::INTEGER (a podobně i u dalších pravidel) a prostuduj si jmenné prostory.
- kasiopia
- Člen | 69
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:');
}