Trying to get property of non-object

Jack.q
Člen | 54
+
0
-

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)

GEpic
Člen | 562
+
+1
-

Zkus vyndat ten $this->redirect("Clanky:detail"); z try / catche

Jack.q
Člen | 54
+
0
-

GEpic napsal(a):

Zkus vyndat ten $this->redirect("Clanky:detail"); z try / 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

Tyraxor
Člen | 31
+
0
-

pokud chceš po zpracování formuláře zůstat na stejné stránce, můžeš tam dát toto:

$this->redirect('this');

ale ten error ti vyskakuje asi proto, že při tom tvém přesměrování tam nemáš ID článku, takže to nic nenačte a ani tam nemáš kontrolu na neexistují článek

David Matějka
Moderator | 6445
+
0
-

mimochodem, bude lepsi cely ten try-catch smazat.