Example #1
0
 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()));
 }
Example #2
0
 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);
     }
 }