vendor/kunstmaan/seo-bundle/EventListener/NodeListener.php line 35

Open in your IDE?
  1. <?php
  2. namespace Kunstmaan\SeoBundle\EventListener;
  3. use Doctrine\ORM\EntityManager;
  4. use Kunstmaan\AdminBundle\Helper\FormWidgets\FormWidget;
  5. use Kunstmaan\AdminBundle\Helper\FormWidgets\Tabs\Tab;
  6. use Kunstmaan\NodeBundle\Entity\HasNodeInterface;
  7. use Kunstmaan\NodeBundle\Event\AdaptFormEvent;
  8. use Kunstmaan\SeoBundle\Entity\Seo;
  9. use Kunstmaan\SeoBundle\Form\SeoType;
  10. use Kunstmaan\SeoBundle\Form\SocialType;
  11. /**
  12.  * This will add a seo tab on each page
  13.  */
  14. class NodeListener
  15. {
  16.     /**
  17.      * @var EntityManager
  18.      */
  19.     private $em;
  20.     /**
  21.      * @param EntityManager $em
  22.      */
  23.     public function __construct(EntityManager $em)
  24.     {
  25.         $this->em $em;
  26.     }
  27.     /**
  28.      * @param AdaptFormEvent $event
  29.      */
  30.     public function adaptForm(AdaptFormEvent $event)
  31.     {
  32.         if ($event->getPage() instanceof HasNodeInterface && !$event->getPage()->isStructureNode()) {
  33.             /* @var Seo $seo */
  34.             $seo $this->em->getRepository('KunstmaanSeoBundle:Seo')->findOrCreateFor($event->getPage());
  35.             $seoWidget = new FormWidget();
  36.             $seoWidget->addType('seo'SeoType::class, $seo);
  37.             $event->getTabPane()->addTab(new Tab('seo.tab.seo.title'$seoWidget));
  38.             $socialWidget = new FormWidget();
  39.             $socialWidget->addType('social'SocialType::class, $seo);
  40.             $socialWidget->setTemplate('@KunstmaanSeo/Admin/Social/social.html.twig');
  41.             $event->getTabPane()->addTab(new Tab('seo.tab.social.title'$socialWidget));
  42.         }
  43.     }
  44. }