Problém se zpracováním dat z komponenty

_kali_malek_
Člen | 7
+
0
-

Ahoj, mám problém s komponentou pro články.

Následoval jsem tento postup. Formulář vykleslím v požadované šabloně, ale nezpracuje se mi. Tudíž se mi nedostane do metody processArticleForm.

ArticleForm služba vypadá takto.

class ArticleForm
{
    private $author;

    private $articles;

    public function __construct (User $user, Articles $articles)
    {
        $this->author = $user;
        $this->articles = $articles;
    }

    public function create ()
    {
        $form = new Form();

        $form->addText('title', 'Nadpis');

        $form->addText('description', 'Popis');

        $form->addTextArea('content', 'Obsah', 3);

        $form->addCheckbox('published', 'Publikovat');

        $form->addSubmit('submit', 'Publikovat');

        $form->onSubmit[] = [$this, 'processArticleForm'];

        return $form;
    }

    public function processArticleForm (Form $form)
    {
        $data = $form->getValues();

        $article = new Article();

        $article->setName($data->title);
        $article->setContent($data->content);
        $article->setPublish($data->published);
        $article->setAuthor($this->author->getId());

        $this->articles->createArticle($article);

    }
}

a použití v ArticlePresenteru takto

class ArticlePresenter extends BasePresenter
{

    /** @var ArticleForm @inject */
    public $articleFormFactory;

    public function createComponentArticleForm ()
    {
        $form = $this->articleFormFactory->create();
        $form->onSuccess[] = function (Form $form)
        {
            $this->redirect('this');
        };

        return $form;
    }

}

Netuší někdo v čem je problém? Děkuju moc za váš čas a rady.

David Matějka
Moderator | 6445
+
+1
-

ahoj, zkontroluj, ze mas v use importovany Nette\Application\UI\Form a nikoliv jen Nette\Forms\Form

_kali_malek_
Člen | 7
+
0
-

Máš pravdu. Měl sem tam špatný use. Ale formulář se stejně jen přenačte a vubec senedostane do process metody.

MajklNajt
Člen | 471
+
+1
-

Skús toto

$form->onSubmit[] = [$this, 'processArticleForm'];

vymeniť za toto

$form->onSuccess[] = [$this, 'processArticleForm'];