Я следовал документации по добавлению пользовательского маршрута. Когда я нажимаю кнопку в представлении списка, я получаю сообщение об ошибке:
Для контроллера
***\UserController
не определен_sonata_admin
и текущий маршрутresetPassword
Документы: http://sonata-project.org/bundles/admin/master/doc/reference/routing.html
Моя служба администратора определяется следующим образом:
sonata.admin.user:
class: ****\Admin\UserAdmin #User Admin
tags:
- { name: sonata.admin, model_manager: cems_model_manager, manager_type: orm, group: core, label: "Users" }
arguments:
- ~
- models\User #User Model
- '****Bundle:User' #User Controller
calls:
- [ setTranslationDomain, [****Bundle]]
Я добавил свой маршрут в свой UserAdmin
protected function configureRoutes(RouteCollection $collection)
{
parent::configureRoutes($collection);
$collection->add('password_reset', $this->getRouterIdParameter() . '/resetPassword/');
}
И создал собственный контроллер и действие.
<?php
namespace ****\Controller;
use Sonata\AdminBundle\Controller\CRUDController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
class UserController extends CRUDController
{
/**
* @Route("/User/{userId}/resetPassword/", name="resetPassword")
*/
public function resetPasswordAction(Request $request, $userId)
{
// code here
}
}
Маршрут работает нормально, если я просматриваю его вручную или через вызов ajax, что наше приложение делает в другой точке. Но когда я пытаюсь нажать кнопку в представлении списка, которое создается в configureListFields() в UserAdmin, я получаю сообщение об ошибке. Я не могу понять, как какие-либо другие действия по умолчанию помещают код в запрос, они выглядят так же, как это. Я нашел несколько других людей, задающих этот вопрос, когда я гуглил ошибку, но мой администратор, похоже, настроен правильно, и это был единственный ответ, который я смог найти, и он кажется устаревшим, поскольку аргументы теперь кажутся в другом порядке.
Заранее спасибо за любую помощь, которую вы, ребята, можете предоставить.