我按照文档添加自定义路线。当我单击列表视图中的按钮时,出现错误:
没有_sonata_admin
为控制器定义***\UserController
以及当前的路线resetPassword
文档:http://sonata-project.org/bundles/admin/master/doc/reference/routing.html 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 调用(我们的应用程序在另一点上执行此操作),该路线工作正常。但是,当我尝试单击列表视图中的按钮(该按钮是在 UserAdmin 的 configureListFields() 中生成的)时,出现主题错误。我无法弄清楚其他任何默认操作如何将代码放入请求中,它们看起来与此相同。当我用谷歌搜索错误时,我发现其他一些人问了这个问题,但我的管理员似乎配置正确,这是我能找到的唯一答案 - 而且它似乎已经过时,因为参数现在似乎处于不同的顺序。
预先感谢你们可以提供的任何帮助。