4

次の 2 つの条件でデータを更新します。

  1. ユーザーがフォームのすべてのフィールド (名前、電子メール、パスワード) を入力したとき
  2. ユーザーがパスワードを入力しない場合 (名前とメールのみを更新する必要があります)。

私は次のformHandler方法を持っています。

public function process(UserInterface $user)
{
    $this->form->setData($user);

    if ('POST' === $this->request->getMethod()) {                       

        $password = trim($this->request->get('fos_user_profile_form')['password']) ;
        // Checked where password is empty
        // But when I remove the password field, it doesn't update anything.
        if(empty($password))
        {
            $this->form->remove('password');            
        }

        $this->form->bind($this->request);

        if ($this->form->isValid()) {
            $this->onSuccess($user);

            return true;
        }

        // Reloads the user to reset its username. This is needed when the
        // username or password have been changed to avoid issues with the
        // security layer.
        $this->userManager->reloadUser($user);
    }
4

2 に答える 2

1

より簡単な方法:

/my/Entity/User

public function setPassword($password)
{
    if ($password) {
        $this->password = $password;
    }
}

したがって、パスワード付きのユーザーを使用するフォームはすべて期待どおりに機能します:)

于 2013-08-20T09:28:10.880 に答える