public function detail(Application $app, Request $request, $id) { $BaseInfo = $app['eccube.repository.base_info']->get(); if ($BaseInfo->getNostockHidden() === Constant::ENABLED) { $app['orm.em']->getFilters()->enable('nostock_hidden'); } /* @var $Product \Eccube\Entity\Product */ $Product = $app['eccube.repository.product']->get($id); if (!$request->getSession()->has('_security_admin') && $Product->getStatus()->getId() !== 1) { throw new NotFoundHttpException(); } if (count($Product->getProductClasses()) < 1) { throw new NotFoundHttpException(); } /* @var $builder \Symfony\Component\Form\FormBuilderInterface */ $builder = $app['form.factory']->createNamedBuilder('', 'add_cart', null, array('product' => $Product, 'id_add_product_id' => false)); /* @var $form \Symfony\Component\Form\FormInterface */ $form = $builder->getForm(); if ($request->getMethod() === 'POST') { $form->handleRequest($request); if ($form->isValid()) { $addCartData = $form->getData(); if ($addCartData['mode'] === 'add_favorite') { if ($app->isGranted('ROLE_USER')) { $Customer = $app->user(); $app['eccube.repository.customer_favorite_product']->addFavorite($Customer, $Product); $app['session']->getFlashBag()->set('product_detail.just_added_favorite', $Product->getId()); return $app->redirect($app->url('product_detail', array('id' => $Product->getId()))); } else { // 非会員の場合、ログイン画面を表示 // ログイン後の画面遷移先を設定 $app->setLoginTargetPath($app->url('product_detail', array('id' => $Product->getId()))); $app['session']->getFlashBag()->set('eccube.add.favorite', true); return $app->redirect($app->url('mypage_login')); } } else { try { $app['eccube.service.cart']->addProduct($addCartData['product_class_id'], $addCartData['quantity'])->save(); } catch (CartException $e) { $app->addRequestError($e->getMessage()); } return $app->redirect($app->url('cart')); } } } else { $addFavorite = $app['session']->getFlashBag()->get('eccube.add.favorite'); if (!empty($addFavorite)) { // お気に入り登録時にログインされていない場合、ログイン後にお気に入り追加処理を行う if ($app->isGranted('ROLE_USER')) { $Customer = $app->user(); $app['eccube.repository.customer_favorite_product']->addFavorite($Customer, $Product); $app['session']->getFlashBag()->set('product_detail.just_added_favorite', $Product->getId()); } } } $is_favorite = false; if ($app->isGranted('ROLE_USER')) { $Customer = $app->user(); $is_favorite = $app['eccube.repository.customer_favorite_product']->isFavorite($Customer, $Product); } return $app->render('Product/detail.twig', array('title' => $this->title, 'subtitle' => $Product->getName(), 'form' => $form->createView(), 'Product' => $Product, 'is_favorite' => $is_favorite)); }