Я не могу обновить пароль пользователя в интеграции FOSUserBundle с EasyAdminBundle

Я пытаюсь обновить пароль для пользователя с помощью EasyAdminBundle, интегрированного с FOSUserBundle, я выполнил шаги, показанные в документации, но не повезло...:(

Я могу обновить имя пользователя, адрес электронной почты, включен, но не пароль, который я устанавливаю в поле Простой пароль.

Есть ли я делаю неправильно или отсутствует?

Спасибо!

2 ответа

Вам также необходимо обновить файл маршрутизации:

https://github.com/javiereguiluz/EasyAdminBundle/blob/master/Resources/doc/book/7-complex-dynamic-backends.md#customization-based-on-overriding-the-default-admincontroller

# app/config/routing.yml
    # resource: "@EasyAdminBundle/Controller/"           <-- REMOVE this line
    resource: "@AppBundle/Controller/AdminController.php" # <-- ADD this line
    type:     annotation
    prefix:   /admin

Покажите некоторый код конфигурации с конфигурацией объекта пользователя.

В 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(Admin контроллер - моя собственная реализация, класс 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);
    }
}

Теперь вы должны объявить вашу новую пользовательскую реализацию AdminController в routing.yaml:

admin_panel:
    resource: "@AdminPanelBundle/Controller/"
    type:     annotation
    prefix:   /admin

Подробнее о переопределении стандартного AdminController

Удачи!:)

Другие вопросы по тегам