Nenalezena cesta v use form
- Sveet
- Člen | 55
Dobrý den.
Mám napsaný script v HomepagePresenter pro formulář který vypadá
následovně:
use Nette\Application\UI\Form;
class HomepagePresenter extends BasePresenter {
protected function createComponentContactForm()
{
$form = new Form();
$form->addText('name', 'Jméno:')
->addRule(Form::FILLED, 'Zadejte jméno');
$form->addText('last', 'Příjmení:')
->addRule(Form::FILLED, 'Zadejte příjmení');
$form->addText('adress', 'Adresa:')
->addRule(Form::FILLED, 'Zadejte příjmení');
$form->addText('mail', 'Email:')
->addRule(Form::FILLED, 'Zadejte email')
->addRule(Form::EMAIL, 'Email nemá správný formát');
$form->addTextarea('message', 'Zpráva:')
->addRule(Form::FILLED, 'Zadejte zprávu');
$form->addSubmit('send', 'Odeslat');
$form->onSuccess[] = $this->processContactForm;
return $form;
}
public function processContactForm(Form $form)
{
$values = $form->getValues(TRUE);
$message = new Message;
$message->addTo('info@test.com')
->setFrom($values['mail'])
->setSubject('Zpráva z kontaktního formuláře')
->setBody($values['message'])
->send();
$this->flashMessage('Zpráva byla odeslána');
$this->redirect('this');
}
}
V default.latte vypisuji formulář následovně:
{form contactForm}
{input name}
{input last}
{input adress}
{input mail}
{input message}
{input send}
{/form}
Kompletní HomepagePresenter má trochu delší script, ale pro ukázku posílám jen tento protože v tomhle je nejspíš chyba, jelikož mi laděnka hlásí chybu:
Fatal Error
Class 'App\FrontModule\Presenters\Form' not found
S červeným řádkem
$form = new Form();
Kde může být chyba? Trápím se s tím od rána
- Šaman
- Člen | 2666
Podívej se, jestli nemáš nějaký formulář třeba v BasePresenteru (bez toho use).
Pro odladění zatím můžeš použít celý NS při vytváření formu:
<?php
$form = new \Nette\Application\UI\Form();
# ...
public function processContactForm(\Nette\Application\UI\Form $form)
?>
Pak ale zakomentuj všechny addRule (taky obsahují Form).
Lomítko na začátku v sekci use být nemusí, v kódu pak ano.
Editoval Šaman (25. 8. 2014 15:32)
- Sveet
- Člen | 55
Ano opravdu tam mám to co tady píšu, kromě emailu: info@test.com, tedy kompletně mám toto:
namespace App\FrontModule\Presenters;
use Nette,
App\Model;
use Nette\Application\UI\Form;
class HomepagePresenter extends BasePresenter {
protected function createComponentContactForm()
{
$form = new Form();
$form->addText('name', 'Jméno:')
->addRule(Form::FILLED, 'Zadejte jméno');
$form->addText('last', 'Příjmení:')
->addRule(Form::FILLED, 'Zadejte příjmení');
$form->addText('adress', 'Adresa:')
->addRule(Form::FILLED, 'Zadejte příjmení');
$form->addText('mail', 'Email:')
->addRule(Form::FILLED, 'Zadejte email')
->addRule(Form::EMAIL, 'Email nemá správný formát');
$form->addTextarea('message', 'Zpráva:')
->addRule(Form::FILLED, 'Zadejte zprávu');
$form->addSubmit('send', 'Odeslat');
$form->onSuccess[] = $this->processContactForm;
return $form;
}
public function processContactForm(Form $form)
{
$values = $form->getValues(TRUE);
$message = new Message;
$message->addTo('info@test.com')
->setFrom($values['mail'])
->setSubject('Zpráva z kontaktního formuláře')
->setBody($values['message'])
->send();
$this->flashMessage('Zpráva byla odeslána');
$this->redirect('this');
}
/**
* @autowire
* @var \App\Model\YoutubeModel
*/
protected $youtube;
/**
* @autowire
* @var \App\Model\CarouselModel
*/
protected $carousel;
/**
* @autowire
* @var \App\Model\StrankyModel
*/
protected $stranky;
/**
* @autowire
* @var \App\Model\SlideshowModel
*/
protected $slider;
/**
* @autowire
* @var \App\Model\TextModel
*/
protected $text;
public function renderDefault() {
$this->template->yt = $this->youtube->findAll();
$this->template->stranky = $this->stranky->findAll();
$this->template->slide = $this->slider->findAll();
$this->template->carousel = $this->carousel->findAll();
$this->template->text = $this->text->findAll()->where('pozice', '1');
$this->template->texts = $this->text->findAll()->where('pozice', '0');
}
}
Editoval Sveet (25. 8. 2014 17:04)
- Šaman
- Člen | 2666
Tohle je divné, imho bude chyba mimo tenhle kód. Použije se určitě tento
kód? (Když třeba před tím řádkem vyhodíš výjimku, projeví se to?)
Chyba je určit v NS, předpokládám, že máš php minimálně 5.3 (to by
házelo jinou chybu). Prochází ti requirement-checker? Sorry za blbé dotazy,
ale v kódu, který jsi sem dal, chyba není.