/** * クーポンが利用されていないかチェック * */ public function onControllerShoppingConfirmBefore($event = null) { $cartService = $this->app['eccube.service.cart']; $preOrderId = $cartService->getPreOrderId(); if (is_null($preOrderId)) { return; } $repository = $this->app['eccube.plugin.coupon.repository.coupon_order']; // クーポン受注情報を取得する $CouponOrder = $repository->findOneBy(array('pre_order_id' => $preOrderId)); if (!$CouponOrder) { return; } if ($this->app->isGranted('ROLE_USER')) { $Customer = $this->app->user(); } else { $Customer = $this->app['eccube.service.shopping']->getNonMember($this->sessionKey); } // クーポンが既に利用されているかチェック $couponUsedOrNot = $this->app['eccube.plugin.coupon.service.coupon']->checkCouponUsedOrNotBefore($CouponOrder->getCouponCd(), $CouponOrder->getOrderId(), $Customer); if ($couponUsedOrNot) { $this->app->addError($this->app->trans('front.plugin.coupon.shopping.sameuser'), 'front.request'); // 既に存在している if (is_null($event)) { header("Location: " . $this->app->url('shopping')); exit; } else { $response = $this->redirect($this->app->url('shopping')); $event->setResponse($response); return; } } }
/** * Index * * @param Application $app * @return \Symfony\Component\HttpFoundation\RedirectResponse */ public function index(Application $app, Request $request) { $Customer = $app->user(); $CustomerForRestore = clone $app->user(); $previous_password = $Customer->getPassword(); $Customer->setPassword($app['config']['default_password']); /* @var $builder \Symfony\Component\Form\FormBuilderInterface */ $builder = $app['form.factory']->createBuilder('entry', $Customer); /* @var $form \Symfony\Component\Form\FormInterface */ $form = $builder->getForm(); if ('POST' === $request->getMethod()) { $form->handleRequest($request); if ($form->isValid()) { if ($Customer->getPassword() === $app['config']['default_password']) { $Customer->setPassword($previous_password); } else { $Customer->setPassword($app['eccube.repository.customer']->encryptPassword($app, $Customer)); } $app['orm.em']->persist($Customer); $app['orm.em']->flush(); return $app->redirect($app->url('mypage_change_complete')); } else { // invalidでもSession上の$app->user()が置き換えられてしまうため復元する $Customer = $CustomerForRestore; $this->getSecurity($app)->getToken()->setUser($Customer); } } return $app->renderView('Mypage/change.twig', array('form' => $form->createView())); }
/** * 退会画面. * * @param Application $app * @param Request $request * @return \Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response */ public function index(Application $app, Request $request) { $builder = $app->form(); $event = new EventArgs(array('builder' => $builder), $request); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::FRONT_MYPAGE_WITHDRAW_INDEX_INITIALIZE, $event); $form = $builder->getForm(); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { switch ($request->get('mode')) { case 'confirm': return $app->render('Mypage/withdraw_confirm.twig', array('form' => $form->createView())); case 'complete': /* @var $Customer \Eccube\Entity\Customer */ $Customer = $app->user(); // 会員削除 $email = $Customer->getEmail(); // メールアドレスにダミーをセット $Customer->setEmail(Str::random(60) . '@dummy.dummy'); $Customer->setDelFlg(Constant::ENABLED); $app['orm.em']->flush(); $event = new EventArgs(array('form' => $form, 'Customer' => $Customer), $request); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::FRONT_MYPAGE_WITHDRAW_INDEX_COMPLETE, $event); // メール送信 $app['eccube.service.mail']->sendCustomerWithdrawMail($Customer, $email); // ログアウト $this->getSecurity($app)->setToken(null); return $app->redirect($app->url('mypage_withdraw_complete')); } } return $app->render('Mypage/withdraw.twig', array('form' => $form->createView())); }
/** * Index * * @param Application $app * @return \Symfony\Component\HttpFoundation\RedirectResponse */ public function index(Application $app, Request $request) { /* @var $form \Symfony\Component\Form\FormInterface */ $form = $app->form()->getForm(); if ('POST' === $request->getMethod()) { $form->handleRequest($request); if ($form->isValid()) { switch ($request->get('mode')) { case 'confirm': return $app->renderView('Mypage/withdraw_confirm.twig', array('form' => $form->createView())); case 'complete': /* @var $Customer \Eccube\Entity\Customer */ $Customer = $app->user(); // 会員削除 $email = $Customer->getEmail(); // メールアドレスにダミーをセット $Customer->setEmail(Str::random(60) . '@dummy.dummy'); $Customer->setDelFlg(Constant::ENABLED); $app['orm.em']->flush(); // メール送信 $app['eccube.service.mail']->sendCustomerWithdrawMail($Customer, $email); // ログアウト $this->getSecurity($app)->setToken(null); return $app->redirect($app->url('mypage_withdraw_complete')); } } } return $app->renderView('Mypage/withdraw.twig', array('form' => $form->createView())); }
/** * 会員情報編集画面. * * @param Application $app * @param Request $request * @return \Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response */ public function index(Application $app, Request $request) { $Customer = $app->user(); $LoginCustomer = clone $Customer; $app['orm.em']->detach($LoginCustomer); $previous_password = $Customer->getPassword(); $Customer->setPassword($app['config']['default_password']); /* @var $builder \Symfony\Component\Form\FormBuilderInterface */ $builder = $app['form.factory']->createBuilder('entry', $Customer); $event = new EventArgs(array('builder' => $builder, 'Customer' => $Customer), $request); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::FRONT_MYPAGE_CHANGE_INDEX_INITIALIZE, $event); /* @var $form \Symfony\Component\Form\FormInterface */ $form = $builder->getForm(); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { if ($Customer->getPassword() === $app['config']['default_password']) { $Customer->setPassword($previous_password); } else { if ($Customer->getSalt() === null) { $Customer->setSalt($app['eccube.repository.customer']->createSalt(5)); } $Customer->setPassword($app['eccube.repository.customer']->encryptPassword($app, $Customer)); } $app['orm.em']->flush(); $event = new EventArgs(array('form' => $form, 'Customer' => $Customer), $request); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::FRONT_MYPAGE_CHANGE_INDEX_COMPLETE, $event); return $app->redirect($app->url('mypage_change_complete')); } $app['security']->getToken()->setUser($LoginCustomer); return $app->render('Mypage/change.twig', array('form' => $form->createView())); }
/** * Index * * @param Application $app * @return \Symfony\Component\HttpFoundation\RedirectResponse */ public function index(Application $app, Request $request) { $Customer = $app->user(); $previous_password = $Customer->getPassword(); $Customer->setPassword($app['config']['default_password']); /* @var $builder \Symfony\Component\Form\FormBuilderInterface */ $builder = $app['form.factory']->createBuilder('entry', $Customer); /* @var $form \Symfony\Component\Form\FormInterface */ $form = $builder->getForm(); if ('POST' === $request->getMethod()) { $form->handleRequest($request); if ($form->isValid()) { switch ($request->get('mode')) { case 'complete': if ($Customer->getPassword() === $app['config']['default_password']) { $Customer->setPassword($previous_password); } else { $Customer->setPassword($app['orm.em']->getRepository('Eccube\\Entity\\Customer')->encryptPassword($app, $Customer)); } $app['orm.em']->persist($Customer); $app['orm.em']->flush(); return $app->redirect($app->url('mypage_change_complete')); } } } return $app->renderView('Mypage/change.twig', array('form' => $form->createView())); }
/** * @param Application $app * @param Request $request * @return string */ public function history(Application $app, Request $request, $id) { /* @var $softDeleteFilter \Eccube\Doctrine\Filter\SoftDeleteFilter */ $softDeleteFilter = $app['orm.em']->getFilters()->getFilter('soft_delete'); $softDeleteFilter->setExcludes(array('Eccube\\Entity\\ProductClass')); $Order = $app['eccube.repository.order']->findOneBy(array('id' => $id, 'Customer' => $app->user())); if (!$Order) { throw new NotFoundHttpException(); } return $app->render('Mypage/history.twig', array('Order' => $Order)); }
public function edit(Application $app, Request $request, $id = null) { $previous_password = null; if ($id) { $Member = $app['eccube.repository.member']->find($id); if (!$Member) { throw new NotFoundHttpException(); } $previous_password = $Member->getPassword(); $Member->setPassword($app['config']['default_password']); } else { $Member = new \Eccube\Entity\Member(); } $LoginMember = clone $app->user(); $app['orm.em']->detach($LoginMember); $builder = $app['form.factory']->createBuilder('admin_member', $Member); $event = new EventArgs(array('builder' => $builder, 'Member' => $Member), $request); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_SETTING_SYSTEM_MEMBER_EDIT_INITIALIZE, $event); $form = $builder->getForm(); if ('POST' === $request->getMethod()) { $form->handleRequest($request); if ($form->isValid()) { if (!is_null($previous_password) && $Member->getpassword() === $app['config']['default_password']) { // 編集時にPWを変更していなければ // 変更前のパスワード(暗号化済み)をセット $Member->setPassword($previous_password); } else { $salt = $Member->getSalt(); if (!isset($salt)) { $salt = $app['eccube.repository.member']->createSalt(5); $Member->setSalt($salt); } // 入力されたPWを暗号化してセット $password = $app['eccube.repository.member']->encryptPassword($Member); $Member->setPassword($password); } $status = $app['eccube.repository.member']->save($Member); if ($status) { $event = new EventArgs(array('form' => $form, 'Member' => $Member), $request); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_SETTING_SYSTEM_MEMBER_EDIT_COMPLETE, $event); $app->addSuccess('admin.member.save.complete', 'admin'); return $app->redirect($app->url('admin_setting_system_member')); } else { $app->addError('admin.member.save.error', 'admin'); } } } $app['security']->getToken()->setUser($LoginMember); return $app->render('Setting/System/member_edit.twig', array('form' => $form->createView(), 'Member' => $Member)); }
/** * 購入処理を行う * * @param Order $Order * @throws ShoppingException */ public function processPurchase(Order $Order) { $em = $this->app['orm.em']; // 合計金額の再計算 $this->calculatePrice($Order); // 商品公開ステータスチェック、商品制限数チェック、在庫チェック $check = $this->isOrderProduct($em, $Order); if (!$check) { throw new ShoppingException('front.shopping.stock.error'); } // 受注情報、配送情報を更新 $Order = $this->calculateDeliveryFee($Order); $this->setOrderUpdateData($Order); // 在庫情報を更新 $this->setStockUpdate($em, $Order); if ($this->app->isGranted('ROLE_USER')) { // 会員の場合、購入金額を更新 $this->setCustomerUpdate($Order, $this->app->user()); } }
/** * Index * * @param Application $app * @param Request $request * @return \Symfony\Component\HttpFoundation\Response */ public function index(Application $app, Request $request) { $Customer = $app->user(); $LoginCustomer = clone $Customer; $app['orm.em']->detach($LoginCustomer); $previous_password = $Customer->getPassword(); $Customer->setPassword($app['config']['default_password']); /* @var $builder \Symfony\Component\Form\FormBuilderInterface */ $builder = $app['form.factory']->createBuilder('entry', $Customer); /* @var $form \Symfony\Component\Form\FormInterface */ $form = $builder->getForm(); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { if ($Customer->getPassword() === $app['config']['default_password']) { $Customer->setPassword($previous_password); } else { $Customer->setPassword($app['eccube.repository.customer']->encryptPassword($app, $Customer)); } $app['orm.em']->flush(); return $app->redirect($app->url('mypage_change_complete')); } $app['security']->getToken()->setUser($LoginCustomer); return $app->renderView('Mypage/change.twig', array('form' => $form->createView())); }
/** * パスワード変更画面 * * @param Application $app * @param Request $request * @return \Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response */ public function changePassword(Application $app, Request $request) { $builder = $app['form.factory']->createBuilder('admin_change_password'); $event = new EventArgs(array('builder' => $builder), $request); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_ADMIM_CHANGE_PASSWORD_INITIALIZE, $event); $form = $builder->getForm(); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $password = $form->get('change_password')->getData(); $Member = $app->user(); $dummyMember = clone $Member; $dummyMember->setPassword($password); $salt = $dummyMember->getSalt(); if (!isset($salt)) { $salt = $app['eccube.repository.member']->createSalt(5); $dummyMember->setSalt($salt); } $encryptPassword = $app['eccube.repository.member']->encryptPassword($dummyMember); $Member->setPassword($encryptPassword)->setSalt($salt); $status = $app['eccube.repository.member']->save($Member); if ($status) { $event = new EventArgs(array('form' => $form), $request); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_ADMIN_CHANGE_PASSWORD_COMPLETE, $event); $app->addSuccess('admin.change_password.save.complete', 'admin'); return $app->redirect($app->url('admin_change_password')); } $app->addError('admin.change_password.save.error', 'admin'); } return $app->render('change_password.twig', array('form' => $form->createView())); }
/** * @param Application $app * @param Request $request * * @return string */ public function favorite(Application $app, Request $request) { $Customer = $app->user(); // paginator $qb = $app['eccube.repository.product']->getFavoriteProductQueryBuilderByCustomer($Customer); $pagination = $app['paginator']()->paginate($qb, $request->get('pageno', 1), $app['config']['search_pmax']); return $app->render('Mypage/favorite.twig', array('pagination' => $pagination)); }
/** * ログイン */ public function login(Application $app, Request $request) { if (!$app['eccube.service.cart']->isLocked()) { return $app->redirect($app->url('cart')); } if ($app->isGranted('IS_AUTHENTICATED_FULLY')) { return $app->redirect($app->url('shopping')); } /* @var $form \Symfony\Component\Form\FormInterface */ $builder = $app['form.factory']->createNamedBuilder('', 'customer_login'); if ($app->isGranted('IS_AUTHENTICATED_REMEMBERED')) { $Customer = $app->user(); if ($Customer) { $builder->get('login_email')->setData($Customer->getEmail()); } } $event = new EventArgs(array('builder' => $builder), $request); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::FRONT_SHOPPING_LOGIN_INITIALIZE, $event); $form = $builder->getForm(); return $app->render('Shopping/login.twig', array('error' => $app['security.last_error']($request), 'form' => $form->createView())); }
/** * @param Application $app * @param Request $request * * @return string */ public function favorite(Application $app, Request $request) { $BaseInfo = $app['eccube.repository.base_info']->get(); if ($BaseInfo->getOptionFavoriteProduct() == Constant::ENABLED) { $Customer = $app->user(); // paginator $qb = $app['eccube.repository.product']->getFavoriteProductQueryBuilderByCustomer($Customer); $pagination = $app['paginator']()->paginate($qb, $request->get('pageno', 1), $app['config']['search_pmax']); return $app->render('Mypage/favorite.twig', array('pagination' => $pagination)); } else { throw new NotFoundHttpException(); } }
public function review(Application $app, Request $request, $id) { /* @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(); } $ProductReview = new \Plugin\ProductReview\Entity\ProductReview(); /* @var $builder \Symfony\Component\Form\FormBuilderInterface */ $builder = $app['form.factory']->createBuilder('product_review', $ProductReview); /* @var $form \Symfony\Component\Form\FormInterface */ $form = $builder->getForm(); if ($request->getMethod() === 'POST') { $form->handleRequest($request); if ($form->isValid()) { switch ($request->get('mode')) { case 'confirm': $builder->setAttribute('freeze', true); $form = $builder->getForm(); $form->handleRequest($request); return $app['twig']->render('ProductReview/Resource/template/default/confirm.twig', array('form' => $form->createView(), 'Product' => $Product)); break; case 'complete': /** @var $ProductReview \Plugin\ProductReview\Entity\ProductReview */ $ProductReview = $form->getData(); if ($app->isGranted('ROLE_USER')) { $Customer = $app->user(); $ProductReview->setCustomer($Customer); } $ProductReview->setProduct($Product); $Disp = $app['eccube.repository.master.disp']->find(\Eccube\Entity\Master\Disp::DISPLAY_HIDE); $ProductReview->setStatus($Disp); $ProductReview->setDelFlg(Constant::DISABLED); $status = $app['eccube.plugin.product_review.repository.product_review']->save($ProductReview); if (!$status) { $app->addError('front.product_review.system.error'); return $app->redirect($app->url('products_detail_review_error')); } else { return $app->redirect($app->url('products_detail_review_complete', array('id' => $Product->getId()))); } break; } return $app->redirect($app->url('admin_product_review')); } } return $app->render('ProductReview/Resource/template/default/index.twig', array('title' => $this->title, 'subtitle' => $Product->getName(), 'form' => $form->createView(), 'Product' => $Product)); }
/** * 作成ボタンクリック時の処理 * 帳票のPDFをダウンロードする. * * @param Application $app * @param Request $request * * @return Response * * @throws BadRequestHttpException */ public function download(Application $app, Request $request) { /** * @var FormBuilder $builder */ $builder = $app['form.factory']->createBuilder('admin_order_pdf'); /* @var Form $form */ $form = $builder->getForm(); $form->handleRequest($request); // Validation if (!$form->isValid()) { log_info('The parameter is invalid!'); return $app->render('OrderPdf/Resource/template/admin/order_pdf.twig', array('form' => $form->createView())); } // サービスの取得 /* @var OrderPdfService $service */ $service = $app['orderpdf.service.order_pdf']; $arrData = $form->getData(); // 購入情報からPDFを作成する $status = $service->makePdf($arrData); // 異常終了した場合の処理 if (!$status) { $app->addError('admin.plugin.order_pdf.download.failure', 'admin'); log_info('Unable to create pdf files! Process have problems!'); return $app->render('OrderPdf/Resource/template/admin/order_pdf.twig', array('form' => $form->createView())); } // ダウンロードする $response = new Response($service->outputPdf(), 200, array('content-type' => 'application/pdf')); // レスポンスヘッダーにContent-Dispositionをセットし、ファイル名をreceipt.pdfに指定 $response->headers->set('Content-Disposition', 'attachment; filename="' . $service->getPdfFileName() . '"'); log_info('OrderPdf download success!', array('Order ID' => implode(',', $this->getIds($request)))); $isDefault = isset($arrData['default']) ? $arrData['default'] : false; if ($isDefault) { // Save input to DB $arrData['admin'] = $app->user(); /* @var OrderPdfRepository $repos */ $repos = $app['orderpdf.repository.order_pdf']; $repos->save($arrData); } return $response; }
/** * お気に入り商品を表示する. * * @param Application $app * @param Request $request * @return \Symfony\Component\HttpFoundation\Response */ public function favorite(Application $app, Request $request) { $BaseInfo = $app['eccube.repository.base_info']->get(); if ($BaseInfo->getOptionFavoriteProduct() == Constant::ENABLED) { $Customer = $app->user(); // paginator $qb = $app['eccube.repository.customer_favorite_product']->getQueryBuilderByCustomer($Customer); $event = new EventArgs(array('qb' => $qb, 'Customer' => $Customer), $request); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::FRONT_MYPAGE_MYPAGE_FAVORITE_SEARCH, $event); $pagination = $app['paginator']()->paginate($qb, $request->get('pageno', 1), $app['config']['search_pmax'], array('wrap-queries' => true)); return $app->render('Mypage/favorite.twig', array('pagination' => $pagination)); } else { throw new NotFoundHttpException(); } }
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)); }
/** * お届け先の設定一覧からの選択 */ public function shipping(Application $app, Request $request) { $cartService = $app['eccube.service.cart']; // カートチェック if (!$cartService->isLocked()) { // カートが存在しない、カートがロックされていない時はエラー return $app->redirect($app->url('cart')); } if ('POST' === $request->getMethod()) { $address = $request->get('address'); if (is_null($address)) { // 選択されていなければエラー return $app->render('Shopping/shipping.twig', array('Customer' => $app->user())); } // 選択されたお届け先情報を取得 $customerAddress = $app['eccube.repository.customer_address']->findOneBy(array('Customer' => $app->user(), 'id' => $address)); $Order = $app['eccube.repository.order']->findOneBy(array('pre_order_id' => $app['eccube.service.cart']->getPreOrderId())); // お届け先情報を更新 $shippings = $Order->getShippings(); foreach ($shippings as $shipping) { $shipping->setName01($customerAddress->getName01())->setName02($customerAddress->getName02())->setKana01($customerAddress->getKana01())->setKana02($customerAddress->getKana02())->setCompanyName($customerAddress->getCompanyName())->setTel01($customerAddress->getTel01())->setTel02($customerAddress->getTel02())->setTel03($customerAddress->getTel03())->setFax01($customerAddress->getFax01())->setFax02($customerAddress->getFax02())->setFax03($customerAddress->getFax03())->setZip01($customerAddress->getZip01())->setZip02($customerAddress->getZip02())->setZipCode($customerAddress->getZip01() . $customerAddress->getZip02())->setPref($customerAddress->getPref())->setAddr01($customerAddress->getAddr01())->setAddr02($customerAddress->getAddr02()); } // 配送先を更新 $app['orm.em']->flush(); return $app->redirect($app->url('shopping')); } return $app->render('Shopping/shipping.twig', array('Customer' => $app->user())); }
/** * ログイン */ public function login(Application $app, Request $request) { $cartService = $app['eccube.service.cart']; if (!$cartService->isLocked()) { return $app->redirect($app['url_generator']->generate('cart')); } if ($app->isGranted('IS_AUTHENTICATED_FULLY')) { return $app->redirect($app->url('shopping')); } /* @var $form \Symfony\Component\Form\FormInterface */ $builder = $app['form.factory']->createNamedBuilder('', 'customer_login'); if ($app->isGranted('IS_AUTHENTICATED_REMEMBERED')) { $Customer = $app->user(); if ($Customer) { $builder->get('login_email')->setData($Customer->getEmail()); } } $form = $builder->getForm(); return $app->render('Shopping/login.twig', array('error' => $app['security.last_error']($request), 'form' => $form->createView())); }
public function detail(Application $app, Request $request, $id) { if ($app['config']['nostock_hidden']) { $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(); } /* @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('productId' => $Product->getId()))); } 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')); } } } if ($app->isGranted('ROLE_USER')) { $Customer = $app->user(); $is_favorite = $app['eccube.repository.customer_favorite_product']->isFavorite($Customer, $Product); } else { $is_favorite = false; } return $app->render('Product/detail.twig', array('title' => $this->title, 'subtitle' => $Product->getName(), 'form' => $form->createView(), 'Product' => $Product, 'is_favorite' => $is_favorite)); }