public function index(Application $app, Request $request, $class_name_id, $id = null)
{
//
$ClassName = $app['eccube.repository.class_name']->find($class_name_id);
if (!$ClassName) {
throw new NotFoundHttpException('商品規格が存在しません');
}
if ($id) {
$TargetClassCategory = $app['eccube.repository.class_category']->find($id);
if (!$TargetClassCategory || $TargetClassCategory->getClassName() != $ClassName) {
throw new NotFoundHttpException('商品規格が存在しません');
}
} else {
$TargetClassCategory = new \Eccube\Entity\ClassCategory();
$TargetClassCategory->setClassName($ClassName);
}
//
$builder = $app['form.factory']->createBuilder('admin_class_category', $TargetClassCategory);
$event = new EventArgs(array('builder' => $builder, 'ClassName' => $ClassName, 'TargetClassCategory' => $TargetClassCategory), $request);
$app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_PRODUCT_CLASS_CATEGORY_INDEX_INITIALIZE, $event);
$form = $builder->getForm();
if ($request->getMethod() === 'POST') {
$form->handleRequest($request);
if ($form->isValid()) {
log_info('規格分類登録開始', array($id));
$status = $app['eccube.repository.class_category']->save($TargetClassCategory);
if ($status) {
log_info('規格分類登録完了', array($id));
$event = new EventArgs(array('form' => $form, 'ClassName' => $ClassName, 'TargetClassCategory' => $TargetClassCategory), $request);
$app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_PRODUCT_CLASS_CATEGORY_INDEX_COMPLETE, $event);
$app->addSuccess('admin.class_category.save.complete', 'admin');
return $app->redirect($app->url('admin_product_class_category', array('class_name_id' => $ClassName->getId())));
} else {
log_info('規格分類登録エラー', array($id));
$app->addError('admin.class_category.save.error', 'admin');
}
}
}
$ClassCategories = $app['eccube.repository.class_category']->getList($ClassName);
return $app->render('Product/class_category.twig', array('form' => $form->createView(), 'ClassName' => $ClassName, 'ClassCategories' => $ClassCategories, 'TargetClassCategory' => $TargetClassCategory));
}