Example #1
0
 /**
  * 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;
 }