Component with name ‚commentForm‘ does not exist

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

Zdravím,
mám takový menší problém, a vůbec nechápu proč mi tento problém vyjíždí. Mám vytvořen PostPresenter, kde mám vytvořen formulář commentForm. Jenže i přes to mi to vypisuje, že formulář commentForm neexistuje. Nevíte někdo proč tomu tak je?

igor.pocta
Člen | 100
+
0
-

Pošli PostPresenter

Jack.q
Člen | 54
+
0
-

igor.pocta napsal(a):

Pošli PostPresenter

Tady je PostPresenter:

<?php
namespace App\Presenters;

use App\Forms;
use Nette\Application\UI\Form;


class PostPresenter extends BasePresenter{
    protected function createComponentCommentForm(){
        $form = new Form;
        $form->addText('name', 'Jméno:')
            ->setRequired('Vyplňte jméno')
            ->setAttribute('placeholder', 'Jméno');
        $form->addTextArea('comment', 'Komentář:')
            ->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, $values){
        $postId = $this->getParameter('postId');
        $this->database->table('hp_comment')->insert([
            'id_h' => $postId,
            'name' => $values->name,
            'comment' => $values->comment,
        ]);

        $this->flashMessage('Děkuji za komentář', 'success');
        $this->redirect('this');
    }
}
igor.pocta
Člen | 100
+
0
-

Já v tom chybu nevidím. Jsi ve správné šabloně (pod app\presenters\templates\ Post \xxx.latte)?

Editoval igor.pocta (5. 8. 2017 10:11)

Jack.q
Člen | 54
+
0
-

igor.pocta napsal(a):

Já v tom chybu nevidím. Jsi ve správné šabloně (pod app\presenters\templates\ Post \xxx.latte)?

Ne, jsem pouze v app\presenters\ (je to přece jen script pro form a zpracování)
Formulář vypisuji v app\presenters\templates\Clanky\xxx.latte
Tento soubor: PostPresenter je čistě jen soubor pro formulář, zpracování, a Presenter v templates žádný není.

--- Doplněno ---
Tak jsem vytvořil app\presenters\templates\Post\default.latte, ale i tak to píše: Component with name ‚commentForm‘ does not exist. Problémem teď je, že absolutně netuším jako zobrazit formulář pro komentáře pod článkem, když jsem vypsal formulář v app\presenters\templates\Post\default.latte

Editoval Jack.q (5. 8. 2017 10:59)

David Matějka
Moderator | 6445
+
+1
-

formular musis mit v tom presenteru, kde ho chces vypsat. tedy v tvem pripade v ClankyPresenter

Zuben45
Člen | 268
+
0
-

David Matějka napsal(a):

formular musis mit v tom presenteru, kde ho chces vypsat. tedy v tvem pripade v ClankyPresenter

nebo ho musí mít předek presenteru, např. BasePresenter ;)

Jack.q
Člen | 54
+
0
-

David Matějka napsal(a):

formular musis mit v tom presenteru, kde ho chces vypsat. tedy v tvem pripade v ClankyPresenter

Mockrát díky za radu, vyřešeno. Ovšem form to sice vypisuje, a však ne se vzhledem který mám přednastaven v css.

---Doplněno---
Tak už vím v čem je problém, ale nechápu jej, Pro input type submit mi přidělil class ale já jsem jej nepřidělil v Presenteru, takže nechápu

Editoval Jack.q (5. 8. 2017 11:16)

CZechBoY
Člen | 3608
+
0
-

Třídu ti to přidá podle rendereru nebo co si určíš sám.
Jak vykresluješ ten form?

Jack.q
Člen | 54
+
0
-

CZechBoY napsal(a):

Třídu ti to přidá podle rendereru nebo co si určíš sám.
Jak vykresluješ ten form?

Přes makro {control commentForm}

CZechBoY
Člen | 3608
+
0
-

A jak má teda Nette poznat jakou třídu tam chceš?

Jack.q
Člen | 54
+
0
-

CZechBoY napsal(a):

A jak má teda Nette poznat jakou třídu tam chceš?

Žádnou class třídu nechci, kdybych jí chtěl přidělil bych jí v Presenteru

Mysteria
Člen | 797
+
0
-

Když použiješ {control commentForm} tak se použije výchozí formátování. Buď si to můžeš upravit, nebo ho vykreslovat manuálně.

CZechBoY
Člen | 3608
+
0
-

Vůbec nechápu tvůj problém… Nechceš třídu, ale stěžuješ si, že nemáš nastylovanej input.
Můžeš trošku upřesnit o co ti teda aktuálně jde a s čím ti máme poradit?

Jack.q
Člen | 54
+
0
-

Mysteria napsal(a):

Když použiješ {control commentForm} tak se použije výchozí formátování. Buď si to můžeš upravit, nebo ho vykreslovat manuálně.

Díky, vyřešeno

CZechBoY
Člen | 3608
+
0
-

{input mojeTextarea}

pripadne
<textarea n:name=mojeTextarea></textarea>
by mohlo taky jet