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'));
}