/** * Méthode permettant d'enregistrer une news. * @param $news News la news à enregistrer * @see self::add() * @see self::modify() * @return void */ public function save(News $news) { if ($news->isValid()) { if ($news->isNew()) { return $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 ($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->getManagerOf($this->module(), 'News')->getUnique($request->getData('id')); } else { $news = new News(); } } $formBuilder = new NewsFormBuilder($news); $formBuilder->build(); $form = $formBuilder->form(); $formHandler = new FormHandler($form, $this->getManagerOf($this->module(), 'News'), $request); if ($formHandler->process()) { $this->app->session()->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()); }