/** * Méthode permettant de traiter le formulaire * et d'enregistrer la news en DB * * @param HTTPRequest $request * @return void */ public function processForm(HTTPRequest $request) { if ($request->method() == 'POST') { $news = new News(['auteur' => $request->postData('auteur'), 'titre' => $request->postData('titre'), 'contenu' => $request->postData('contenu')]); if ($request->getExists('id')) { $news->setId($request->getData('id')); } } else { // Transmission de l'identifiant de la news en cas de modification if ($request->getExists('id')) { $news = $this->managers->getManagerOf('News')->getUnique($request->getData('id')); } else { $news = new News(); } } $formBuilder = new NewsFormBuilder($news); $formBuilder->build(); $form = $formBuilder->form(); $formHandler = new FormHandler($form, $this->managers->getManagerOf('News'), $request); if ($formHandler->process()) { $this->app->user()->setFlash($news->isNew() ? 'La news a bien été ajoutée !' : 'La news a bien été modifiée !'); $this->app->httpResponse()->redirect('/admin/'); } $this->page->addVar('form', $form->createView()); }
public function processForm(HTTPRequest $request) { if ($request->method() == 'POST') { $news = new News(['auteur' => $request->postData('auteur'), 'titre' => $request->postData('titre'), 'contenu' => $request->postData('contenu')]); if ($request->getExists('id')) { $news->setId($request->getData('id')); } } else { // L'identifiant de la news est transmis si on veut la modifier if ($request->getExists('id')) { $news = $this->managers->getManagerOf('News')->getUnique($request->getData('id')); } else { $news = new News(); } } $formBuilder = new NewsFormBuilder($news); $formBuilder->build(); $form = $formBuilder->form(); // On récupère le gestionnaire de formulaire (le paramètre de getManagerOf() est bien entendu à remplacer). $formHandler = new \OCFram\FormHandler($form, $this->managers->getManagerOf('News'), $request); if ($formHandler->process()) { // Ici ne résident plus que les opérations à effectuer une fois l'entité du formulaire enregistrée // (affichage d'un message informatif, redirection, etc.). $this->app->user()->setFlash($news->isNew() ? 'La news a bien été ajoutée !' : 'La news a bien été modifiée !'); $this->app->httpResponse()->redirect('/admin/'); } $this->page->addVar('form', $form->createView()); }
/** * Méthode permettant d'enregistrer une news * Cette méthode s'implémente directement dans NewsManager * car elle ne dépend pas du DAO * * save() ajoute la news si nouvelle ou la met à jour si déjà enregistrée * * @param News $news * @see self::add() * @see self::modify() * @return void * @throws \RuntimeException */ public function save(News $news) { if ($news->isValid()) { $news->isNew() ? $this->add($news) : $this->modify($news); } else { throw new \RuntimeException('La news doit être validée pour être enregistrée'); } }
public function processForm(HTTPRequest $request) { if (!$this->app()->user()->isAuthenticated()) { $this->app->user()->setFlash('Connectez vous ou inscrivez vous pour accéder à cette section'); $this->app->httpResponse()->redirect('/'); } if ($request->method() == 'POST') { $news = new News(['auteur' => $this->app()->user()->member()->id(), 'titre' => $request->postData('titre'), 'contenu' => $request->postData('contenu'), 'tags' => $request->postData('tags')]); if ($request->getExists('id')) { $news->setId($request->getData('id')); } } else { // L'identifiant de la news est transmis si on veut la modifier if ($request->getExists('id')) { $news = $this->managers->getManagerOf('News')->getUnique($request->getData('id'), true); if ($news == NULL) { $this->generateOtherPage('error', 'La news n°' . $request->getData('id') . ' n\'existe pas'); return; } } else { $news = new News(); } } $formBuilder = new NewsFormBuilder($news); $formBuilder->build(); $form = $formBuilder->form(); $formHandler = new FormHandler($form, $this->managers->getManagerOf('News'), $request); if ($formHandler->process()) { $this->app->user()->setFlash($news->isNew() ? 'La news a bien été ajoutée !' : 'La news a bien été modifiée !'); $this->app->httpResponse()->redirect('/'); } $this->managers->getManagerOf('News')->saveTags($news); $this->page->addVar('form', $form->createView()); $this->page()->addVar('user', $this->app()->user()); }
public function processForm(HTTPRequest $request) { $this->run(); //manager news $managersNews = $this->managers->getManagerOf('News'); // manager tag $managersTag = $this->managers->getManagerOf('Tag'); if ($request->method() == 'POST') { // Éléménet News $news = new News(['auteur' => $this->app->user()->getAttribute('user'), 'titre' => $request->postData('titre'), 'contenu' => $request->postData('contenu')]); // Élément Tag if ($request->postData('name') != '') { $tag = new Tag(['name' => $request->postData('name')]); $table = NewsController::separateTag($tag->name()); //vraiment ici ? //on sauvegarde tout les tags rentré si ils n'existes pas ! } else { $tag = new Tag(); } if ($request->getExists('id')) { $news->setId($request->getData('id')); $tag = new Tag(); } } else { // L'identifiant de la news est transmis si on veut la modifier if ($request->getExists('id')) { $news = $managersNews->getUnique($request->getData('id')); $text = ''; foreach ($managersTag->getUnique($request->getData('id')) as $value) { $text = $text . ' ' . $value['NTC_name']; } $tag = new Tag(['name' => $text]); if ($news == null) { $this->app->httpResponse()->redirect404(); } } else { $news = new News(); $tag = new Tag(); } } //construction formulaire news $formBuilderNews = new NewsMemberFormBuilder($news); $formBuilderNews->build(); $formNews = $formBuilderNews->form(); $formHandlerNews = new FormHandler($formNews, $managersNews, $request); //Construction formulaire Tag $formBuilderTag = new TagFormBuilder($tag); // même formbuilder ? $formBuilderTag->build($managersTag); $formTag = $formBuilderTag->form(); // manager tagd $managersTagd = $this->managers->getManagerOf('Tagd'); if ($formHandlerNews->process()) { //Refaire proprement le handler pour les tags $this->app->user()->setFlash($news->isNew() ? 'La news a bien été ajoutée !' : 'La news a bien été modifiée !'); // récupérer le dernier id de news if ($news->isNew()) { $news->setId($managersNews->getlastid()); } //var_dump($news->id()); NewsController::saveTag($table, $managersTag); foreach ($table as $key => $value) { $idtag = $managersTag->getId($value); $tagd = new Tagd(); $tagd->setIdnew($news->id()); $tagd->setIdtag($idtag); $managersTagd->add($tagd); } $this->app->httpResponse()->redirect($this->app->router()->getBuiltRoute('News', 'index', [])); } $this->page->addVar('formNews', $formNews->createView()); $this->page->addVar('formTag', $formTag->createView()); }
public function processForm(HTTPRequest $request) { if ($request->method() == 'POST') { $news = new News(['auteur' => $request->postData('auteur'), 'titre' => $request->postData('titre'), 'contenu' => $request->postData('contenu')]); if ($request->getExists('id')) { $news->setId($request->getData('id')); } } else { // L'identifiant de la news est transmis si on veut la modifier if ($request->getExists('id')) { $news = $this->managers->getManagerOf('News')->getUnique($request->getData('id')); } else { $news = new News(); } } $formBuilder = new NewsFormBuilder($news); $formBuilder->build(); $form = $formBuilder->form(); $formHandler = new FormHandler($form, $this->managers->getManagerOf('News'), $request); if ($formHandler->process()) { if ($news->isNew()) { $news->setId($request->getData('id')); // Suppression des caches si la news est nouvelle $cache = new Cache($news); $cache->unlinkDataAndShowCaches(); $cache->unlinkIndexCache(); } else { // Suppression des caches si la news est modifiée $cache = new Cache(null, $news); $cache->unlinkDataAndShowCaches(); } $this->app->user()->setFlash($news->isNew() ? 'La news a bien été ajoutée !' : 'La news a bien été modifiée !'); $this->app->httpResponse()->redirect('/admin/'); } $this->page->addVar('form', $form->createView()); }