/** * Render html of the product detail. * * @param Response $response * @param ProductMaker $ProductMaker * * @return mixed|string */ private function renderProductDetail(Response $response, ProductMaker $ProductMaker) { $parts = $this->app->renderView('Maker/Resource/template/default/maker.twig', array('maker_name' => $ProductMaker->getMaker()->getName(), 'maker_url' => $ProductMaker->getMakerUrl())); $html = $response->getContent(); $html = $this->renderPosition($html, $parts, $this->makerTag); return $html; }
/** * Create maker * * @param Maker $Maker * @param Product $Product * * @return ProductMaker */ protected function createProductMaker(Maker $Maker, $Product = null) { /** * @var Generator $faker */ $faker = $this->getFaker(); if (!$Product) { // New product /** * @var Generator $faker */ $faker = $this->getFaker(); $formData = $this->createFormData(); $formData['plg_maker'] = ''; $formData['plg_maker_url'] = ''; /** * @var Client $client */ $client = $this->client; $client->request('POST', $this->app->url('admin_product_product_new'), array('admin_product' => $formData)); $this->assertTrue($client->getResponse()->isRedirection()); $arrTmp = explode('/', $client->getResponse()->getTargetUrl()); $productId = $arrTmp[count($arrTmp) - 2]; $client->followRedirect(); $Product = $this->app['eccube.repository.product']->find($productId); } $ProductMaker = new ProductMaker(); $ProductMaker->setMaker($Maker); $ProductMaker->setMakerUrl($faker->url); $ProductMaker->setDelFlg(Constant::DISABLED); $ProductMaker->setId($Product->getId()); $this->app['orm.em']->persist($ProductMaker); $this->app['orm.em']->flush($ProductMaker); return $ProductMaker; }
/** * New Event:function on version >= 3.0.9 (new hook point) * Save event. * * @param EventArgs $eventArgs */ public function onAdminProductEditComplete(EventArgs $eventArgs) { log_info('Event: product maker hook into the product management complete start.'); /** * @var Form $form */ $form = $eventArgs->getArgument('form'); /** * @var Product $Product */ $Product = $eventArgs->getArgument('Product'); /** * @var ProductMakerRepository $repository */ $repository = $this->app['eccube.plugin.maker.repository.product_maker']; /** * @var ProductMaker $ProductMaker */ $ProductMaker = $repository->find($Product); if (!$ProductMaker) { $ProductMaker = new ProductMaker(); } $maker = $form->get('plg_maker')->getData(); if (!$maker) { if ($ProductMaker->getId()) { log_info('Event: product maker removed', array('Product maker id' => $ProductMaker->getId())); $this->app['orm.em']->remove($ProductMaker); $this->app['orm.em']->flush($ProductMaker); } return; } $makerUrl = $form->get('plg_maker_url')->getData(); $ProductMaker->setId($Product->getId())->setMakerUrl($makerUrl)->setDelFlg(Constant::DISABLED)->setMaker($maker); /** * @var EntityRepository $this->app['orm.em'] */ $this->app['orm.em']->persist($ProductMaker); $this->app['orm.em']->flush($ProductMaker); log_info('Event: product maker save success!', array('Product id' => $ProductMaker->getId())); log_info('Event: product maker hook into the product management complete end.'); }