如何在Sonata CRUD控制器中添加新方法?

时间:2013-09-12 13:12:25

标签: php symfony doctrine-orm sonata-admin symfony-sonata

在SonataBundle的CRUDController中有很多动作,例如listAction(),editAction()等。 对于用户管理是链接:

http://site.local/app_dev.php/admin/sonata/user/user/list

和路线:

admin_sonata_user_user_list       -  /admin/sonata/user/user/list

我想为此控制器添加自己的操作:listSecondAction();

我复制方法listAction并将名称更改为listSecondAction。接下来我打开

http://site.local/app_dev.php/admin/sonata/user/user/listSecond

我有错误:

No route found for "GET /admin/sonata/user/user/listSecond"

那么我该如何添加此行为的路由?我应该如何进入此路由?

2 个答案:

答案 0 :(得分:2)

在您的管理类中,您必须添加configureRoutes方法:

protected function configureRoutes(RouteCollection $collection) {
    $collection
        ->add('listSecond', 'listSecond')
        ->add('another', $this->getRouterIdParameter() . '/another');
    ;
}

在你的控制器中你需要添加这两个动作:

public function listSecondAction() {
    // Your code here
}

public function anotherAction($id = null) {
    // Here how to get the current object 
    $id = $this->get('request')->get($this->admin->getIdParameter());
    $object = $this->admin->getObject($id);
    // Your code here
}

希望这有帮助

答案 1 :(得分:1)