Trying to get property of non-object
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Jack.q
- Člen | 54
Zdravím Vás, mám menší problém, nebo spíš než problémem bych to nazval neznámou chybou, ale nejspíš to tak bude připadat jen mě protože jsem ve Frameworku začátečník. Po přidání komentáře k článku na mě vyjede hláška Trying to get property of non-object, ale po načtení stránky opětovně je vše v pořádku, a dokonce i s přidaným komentářem. V čem může být problém?
ClankyPresenter
class ClankyPresenter extends BasePresenter{
/**
* @inject
* @var \App\Model\BlogModel $blog
*/
public $blog;
/**
* @inject
* @var \App\Model\CommentModel
*/
public $comment;
public function renderDefault(){
}
public function actionDetail($id) {
$this->template->clanek = $this->blog->findById($id);
}
protected function createComponentCommentForm(){
$form = new Form;
$form->addText('name', '')
->setRequired('Vyplňte jméno')
->setAttribute('placeholder', 'Jméno');
$form ->addText('mail', '')
->setRequired('Vyplňte e-mail')
->setAttribute('placeholder', 'E-mailová adresa');
$form->addTextArea('comment', '')
->setRequired('Vyplňte komentář')
->setAttribute('placeholder', 'Text komentáře');
$form->addSubmit('send', 'Přidat komentář');
$form->onSuccess[] = [$this, 'commentFormSucceeded'];
return $form;
}
public function commentFormSucceeded($form){
$postId = $this->presenter->getParameter('id');
$values = $form->getValues();
try{
$this->comment->insert(array(
"post_id" => $postId,
"name" => $values->name,
"mail" => $values->mail,
"comment" => $values->comment
));
$this->flashMessage('Děkujeme za komentář', 'allert allert-success');
$this->redirect("Clanky:detail");
}catch(Exception $e){
}
}
}
Editoval Jack.q (8. 12. 2017 9:29)
- Jack.q
- Člen | 54
GEpic napsal(a):
Zkus vyndat ten
$this->redirect("Clanky:detail");
ztry / catche
Když vyhodím redirect tak funguje, ale netuším jak zařídit aby fungovalo přesměrování na detail článku po odeslání formuláře, zatím u jednoho testovacího funguje, ale netuším zda to takto bude fungovat i u ostatních