public function onRenderAdminProductCategoryEditBefore(FilterResponseEvent $event) { $app = $this->app; $request = $event->getRequest(); $response = $event->getResponse(); $id = $request->attributes->get('id'); $CategoryContent = null; if ($id) { $CategoryContent = $app['category_content.repository.category_content']->find($id); } if (is_null($CategoryContent)) { $CategoryContent = new \Plugin\CategoryContent\Entity\CategoryContent(); } // DomCrawlerにHTMLを食わせる $html = $response->getContent(); $crawler = new Crawler($html); $form = $app['form.factory']->createBuilder('admin_category')->getForm(); $form['content']->setData($CategoryContent->getContent()); $form->handleRequest($request); $twig = $app->renderView('CategoryContent/Resource/template/Admin/category.twig', array('form' => $form->createView())); $oldCrawler = $crawler->filter('form')->first(); // DomCrawlerからHTMLを吐き出す $html = $crawler->html(); $oldHtml = ''; $newHtml = ''; if (count($oldCrawler) > 0) { $oldHtml = $oldCrawler->html(); $newHtml = $oldHtml . $twig; } $html = str_replace($oldHtml, $newHtml, $html); $response->setContent($html); $event->setResponse($response); }
public function onAdminProductCategoryEditAfter() { $app = $this->app; $id = $app['request']->attributes->get('id'); $form = $app['form.factory']->createBuilder('admin_category')->getForm(); $CategoryContent = $app['category_content.repository.category_content']->find($id); if (is_null($CategoryContent)) { $CategoryContent = new \Plugin\CategoryContent\Entity\CategoryContent(); } $form->get('content')->setData($CategoryContent->getContent()); $form->handleRequest($app['request']); if ('POST' === $app['request']->getMethod()) { if ($form->isValid()) { $content = $form->get('content')->getData(); $Category = $app['eccube.repository.category']->find($id); $CategoryContent->setCategoryId($Category->getId())->setCategory($Category)->setContent($content); $app['orm.em']->persist($CategoryContent); $app['orm.em']->flush(); } } }