public function addAction() { $formTag = new TagForm(); // On récupère l'objet Request $request = $this->getRequest(); // On vérifie si le formulaire a été posté if ($request->isPost()) { // On instancie notre modèle Tag $tag = new Tag(); // Et on passe l'InputFilter de Tag au formulaire $formTag->setInputFilter($tag->getInputFilter()); $formTag->setData($request->getPost()); // Si le formulaire est valide if ($formTag->isValid()) { // On prend les données du formulaire qui sont converti pour correspondre à notre modèle Tag $tag->exchangeArray($formTag->getData()); // On enregistre ces données dans la table Tag $this->getServiceLocator()->get('Application\\Service\\TagService')->saveTag($tag); $this->getServiceLocator()->get('Zend\\Log')->info("Le tag '{$tag->name}' a été ajoutée"); $this->flashMessenger()->addMessage(array('success' => "Le tag '{$tag->name}' a été ajoutée")); // Puis on redirige sur la page d'accueil. return $this->redirect()->toRoute('zfcadmin/tag'); } else { // Si le formulaire n'est pas valide, on reste sur la page et les erreurs apparaissent foreach ($formTag->getMessages() as $messageId => $message) { $this->getServiceLocator()->get('Zend\\Log')->err("Validation failure '{$messageId}': {$message}"); $this->flashMessenger()->addMessage(array('error' => "Validation failure '{$messageId}': {$message}")); } } } return new ViewModel(array('form' => $formTag, 'flashMessages' => $this->flashMessenger()->getMessages())); }
public function setTags($tags) { $allTags = $this->getAllTags(); $incomeTags = array_filter(array_map('trim', explode(',', $tags))); $diff = array_diff($incomeTags, $allTags); foreach ($diff as $tag) { $tagModel = new Tag(); $tagModel->exchangeArray(['name' => $tag]); $this->getEntityManager()->persist($tagModel); } $this->getEntityManager()->flush(); $tagsModels = $this->getEntityManager()->createQueryBuilder()->select('t')->from('Application\\Entity\\Tag', 't')->where('t.name IN (:names)')->setParameter('names', $incomeTags)->getQuery()->execute(); if (count($tagsModels) > 0) { $this->getProduct()->tags->clear(); $this->getProduct()->setTags($tagsModels); } }