App\Components\Forms\ArticleForm::getReflection() is deprecated in

kiCkZ
Člen | 153
+
0
-

Zdravim,

prosím nevíte někdo, proč když přistupuji k formulářové komponentě, tak mi to vyhazuje tuto chybu:

App\Components\Forms\ArticleForm::getReflection() is deprecated in /Users/kickz/Sites/cms/vendor/nette/application/src/Application/UI/Component.php:129

// v této editaci je problém

public function actionEdit($id)
    {
        $this->id = $id;
        $article = $this->articleRepository->getArticle($id);
        if (!$article) {
            $this->error('Článek nebyl nalezen');
        }
        $this['articleForm']->setDefaults($article->toArray()); // chyba k tomuto řádku
    }

// komponenta v presenteru

public function createComponentArticleForm()
{
    $control = $this->articleForm->create($this->id, function () {
        $this->flashMessage('Článek byl úspěšně uložen.', 'alert-success');
        $this->redirect('default');
    });
    return $control;
}

Děkuji

Editoval kiCkZ (10. 6. 2018 15:05)

Ondřej Kubíček
Člen | 494
+
0
-

a co je v té třídě ArticleForm ?

kiCkZ
Člen | 153
+
0
-

Ondřej Kubíček napsal(a):

a co je v té třídě ArticleForm ?

Továrnička zaregistrovaná v configu:

IArticleFormFactory.php

interface IArticleFormFactory
{
    /** @return \App\Components\Forms\ArticleForm */
    function create($id);

}

Doplním ještě ArticleForm.php

public function render()
    {
        $this->template->setFile(__DIR__ . '/articleform.latte');
        $this->template->render();
    }

    public function createComponentForm()
    {
        $form = $this->formFactory->create();
        $form->addText('title', 'Název článku: ')
            ->setRequired();
        $form->addText('url', 'URL adresa: ');
        $form->addSelect('category_id', 'Kategorie:', $this->articleCategoryRepository->getNameCategories());
        $form->addTextArea('content')
            ->setHtmlId('tiny-textarea');
        $form->addSubmit('save', 'Uložit');
        if($this->article) {
            $form->setDefaults($this->article->toArray());
        }
        $form->onSuccess[] = [$this, 'processForm'];
        return $form;
    }

    public function processForm(Form $form, ArrayHash $values)
    {
        try {
            if (!$this->article) {
                $this->articleRepository->createArticle($values->title, $values->url, $values->category_id, $values->content);
            }
            $this->articleRepository->createArticle($values->title, $values->url, $values->category_id, $values->content);
        } catch (Exception $e) {
            $form->addError('Nepodařilo se vytvořit článek');
        }
    }
kiCkZ
Člen | 153
+
+2
-

Tak už jsem na to přišel, nějakým způsobem se mlátila traita SmartObject.