FOSUserBundle と統合された EasyAdminBundle を使用してユーザーのパスワードを更新しようとしています。ドキュメントに示されている手順に従いましたが、運がありません... :(
ユーザー名、電子メール、有効化は更新できますが、[プレーン パスワード] フィールドで設定しているパスワードは更新できません。
私が間違っているか、行方不明ですか?
ありがとう!
FOSUserBundle と統合された EasyAdminBundle を使用してユーザーのパスワードを更新しようとしています。ドキュメントに示されている手順に従いましたが、運がありません... :(
ユーザー名、電子メール、有効化は更新できますが、[プレーン パスワード] フィールドで設定しているパスワードは更新できません。
私が間違っているか、行方不明ですか?
ありがとう!
ユーザー エンティティ構成を含む構成コードを示します。
config.yaml にコードを追加しました:
entities:
User:
class: AppNg\Symfony\AuthBundle\Entity\User
form:
fields:
- username
- email
- enabled
- lastLogin
- { property: 'plainPassword', type: 'text', type_options: { required: false } }
- { property: 'roles', type: 'choice', type_options: { multiple: true, choices: { 'ROLE_USER': 'ROLE_USER', 'ROLE_ADMIN': 'ROLE_ADMIN' } } }
label: 'Users list'
edit:
title: 'user_edit'
new:
title: 'add_new_user'
list:
title: 'users_list'
actions:
- {name: 'edit'}
- {name: 'delete'}
fields:
- { property: 'id'}
- { property: 'username'}
- { property: 'email'}
- { property: 'lastLogin'}
- { property: 'locked'}
- { property: 'enabled'}
次に、AdminController (管理コントローラーは私自身の実装であり、AdminController クラスは EasyAdminController を拡張します。このステップは非常に重要です! AdminController ファイル内のすべてのコード:
<?php
namespace AdminPanelBundle\Controller;
use JavierEguiluz\Bundle\EasyAdminBundle\Controller\AdminController as EasyAdminController;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Request;
class AdminController extends EasyAdminController
{
/**
* @Route("/", name="easyadmin")
* @param Request $request
* @return \Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response
*/
public function indexAction(Request $request)
{
return parent::indexAction($request);
}
public function createNewUserEntity()
{
return $this->get('fos_user.user_manager')->createUser();
}
public function prePersistUserEntity($user)
{
$this->get('fos_user.user_manager')->updateUser($user, false);
}
public function preUpdateUserEntity($user)
{
$this->get('fos_user.user_manager')->updateUser($user, false);
}
}
ここで、routing.yaml で新しいカスタム AdminController 実装を宣言する必要があります。
admin_panel:
resource: "@AdminPanelBundle/Controller/"
type: annotation
prefix: /admin
Default AdminController のオーバーライドに関する詳細情報
幸運を!:)