Eccube\Controller\Mypage\DeliveryController::edit PHP Метод

edit() публичный Метод

お届け先編集画面.
public edit ( Application $app, Request $request, $id = null ) : Response
$app Eccube\Application
$request Symfony\Component\HttpFoundation\Request
Результат Symfony\Component\HttpFoundation\Response
    public function edit(Application $app, Request $request, $id = null)
    {
        $Customer = $app['user'];
        // 配送先住所最大値判定
        // $idが存在する際は、追加処理ではなく、編集の処理ため本ロジックスキップ
        if (is_null($id)) {
            $addressCurrNum = count($Customer->getCustomerAddresses());
            $addressMax = $app['config']['deliv_addr_max'];
            if ($addressCurrNum >= $addressMax) {
                throw new NotFoundHttpException('お届け先の登録数の上限を超えています');
            }
        }
        $CustomerAddress = $app['eccube.repository.customer_address']->findOrCreateByCustomerAndId($Customer, $id);
        $parentPage = $request->get('parent_page', null);
        // 正しい遷移かをチェック
        $allowdParents = array($app->url('mypage_delivery'), $app->url('shopping_delivery'));
        // 遷移が正しくない場合、デフォルトであるマイページの配送先追加の画面を設定する
        if (!in_array($parentPage, $allowdParents)) {
            // @deprecated 使用されていないコード
            $parentPage = $app->url('mypage_delivery');
        }
        $builder = $app['form.factory']->createBuilder('customer_address', $CustomerAddress);
        $event = new EventArgs(array('builder' => $builder, 'Customer' => $Customer, 'CustomerAddress' => $CustomerAddress), $request);
        $app['eccube.event.dispatcher']->dispatch(EccubeEvents::FRONT_MYPAGE_DELIVERY_EDIT_INITIALIZE, $event);
        $form = $builder->getForm();
        $form->handleRequest($request);
        if ($form->isSubmitted() && $form->isValid()) {
            log_info('お届け先登録開始', array($id));
            $app['orm.em']->persist($CustomerAddress);
            $app['orm.em']->flush();
            log_info('お届け先登録完了', array($id));
            $event = new EventArgs(array('form' => $form, 'Customer' => $Customer, 'CustomerAddress' => $CustomerAddress), $request);
            $app['eccube.event.dispatcher']->dispatch(EccubeEvents::FRONT_MYPAGE_DELIVERY_EDIT_COMPLETE, $event);
            $app->addSuccess('mypage.delivery.add.complete');
            return $app->redirect($app->url('mypage_delivery'));
        }
        $BaseInfo = $app['eccube.repository.base_info']->get();
        return $app->render('Mypage/delivery_edit.twig', array('form' => $form->createView(), 'parentPage' => $parentPage, 'BaseInfo' => $BaseInfo));
    }
DeliveryController