Eccube\Controller\Admin\Setting\System\MemberController::edit PHP Метод

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

public edit ( Application $app, Request $request, $id = null )
$app Eccube\Application
$request Symfony\Component\HttpFoundation\Request
    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));
    }