/** * Funkce připravující formulář pro zadání nového/úpravu existujícího článku * @return Form */ public function createComponentEditForm() { $form = new Form(); $form->addHidden('id'); $form->addText('title', 'Název článku:', null, 200)->setRequired('Je nutné zadat název článku'); $form->addTextArea('perex', 'Perex:')->setRequired('Je nutné zadat perex článku.')->setAttribute('class', 'wysiwyg'); $form->addTextArea('content', 'Obsah článku:')->setRequired('Je nuté zadat obsah článku.')->setAttribute('class', 'wysiwyg'); $categories = $this->categoriesModel->findAll(); $categoriesArr = []; foreach ($categories as $category) { $categoriesArr[$category->id] = $category->name; } $form->addSelect('category', 'Kategorie', $categoriesArr)->setPrompt('--vyberte--')->setRequired('Je nutné vybrat kategorii.'); $form->addSubmit('save', 'uložit')->onClick[] = function (SubmitButton $button) { //funkce po úspěšném odeslání formuláře $data = $button->form->getValues(true); if ($data['id'] > 0) { //aktualizujeme existující článek $article = $this->articlesModel->find($data['id']); $article->title = $data['title']; $article->perex = $data['perex']; $article->content = $data['content']; $article->category = $data['category']; $article->author = $this->user->id; $result = $this->articlesModel->save($article); } else { //zobrazíme nový článek $article = new Article(); $article->title = $data['title']; $article->perex = $data['perex']; $article->content = $data['content']; $article->category = $data['category']; $article->author = $this->user->id; $result = $this->articlesModel->save($article); } if ($result) { $this->flashMessage('Článek byl úspěšně uložen.'); } else { $this->flashMessage('Článek se nepodařilo uložit.', 'error'); } if ($article->id > 0) { $this->redirect('Article:show', ['id' => $article->id]); } else { $this->redirect('Homepage:default'); } }; $form->addSubmit('storno', 'zrušit')->setValidationScope([])->onClick[] = function (SubmitButton $button) { //funkce po kliknutí na tlačítko pro zrušení $data = $button->form->getValues(true); if ($data['id'] > 0) { $this->redirect('Article:show', ['id' => $data['id']]); //přesměrování na zobrazení daného článku } elseif ($data['category'] > 0) { $this->redirect('Article:list', ['category' => $data['category']]); //přesměrování na zobrazení kategorie } else { $this->redirect('Homepage:default'); } }; return $form; }