Eccube\Controller\CartController::add PHP Method

add() public method

カートに商品を追加する.
public add ( Application $app, Request $request ) : RedirectResponse | Response
$app Eccube\Application
$request Symfony\Component\HttpFoundation\Request
return Symfony\Component\HttpFoundation\RedirectResponse | Symfony\Component\HttpFoundation\Response
    public function add(Application $app, Request $request)
    {
        $productClassId = $request->get('product_class_id');
        $quantity = $request->request->has('quantity') ? $request->get('quantity') : 1;
        // FRONT_CART_ADD_INITIALIZE
        $event = new EventArgs(array('productClassId' => $productClassId, 'quantity' => $quantity), $request);
        $app['eccube.event.dispatcher']->dispatch(EccubeEvents::FRONT_CART_ADD_INITIALIZE, $event);
        try {
            $productClassId = $event->getArgument('productClassId');
            $quantity = $event->getArgument('quantity');
            log_info('カート追加処理開始', array('product_class_id' => $productClassId, 'quantity' => $quantity));
            $app['eccube.service.cart']->addProduct($productClassId, $quantity)->save();
            log_info('カート追加処理完了', array('product_class_id' => $productClassId, 'quantity' => $quantity));
            // FRONT_CART_ADD_COMPLETE
            $event = new EventArgs(array('productClassId' => $productClassId, 'quantity' => $quantity), $request);
            $app['eccube.event.dispatcher']->dispatch(EccubeEvents::FRONT_CART_ADD_COMPLETE, $event);
            if ($event->hasResponse()) {
                return $event->getResponse();
            }
        } catch (CartException $e) {
            log_info('カート追加エラー', array($e->getMessage()));
            // FRONT_CART_ADD_EXCEPTION
            $event = new EventArgs(array('exception' => $e), $request);
            $app['eccube.event.dispatcher']->dispatch(EccubeEvents::FRONT_CART_ADD_EXCEPTION, $event);
            if ($event->hasResponse()) {
                return $event->getResponse();
            }
            $app->addRequestError($e->getMessage());
        }
        return $app->redirect($app->url('cart'));
    }