如何在奏鸣曲CRUD控制器中添加新方法


How add new method in Sonata CRUD controller?

在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

我想为这个控制器添加自己的操作:列表第二操作();

我复制方法列表操作并将名称更改为列表第二操作。接下来我打开

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

我有错误:

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

那么,如何添加此操作以及该操作的路由位置?我应该如何进入此路由?

在你的管理类中,你必须添加配置路由方法:

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
}

希望这有帮助

请查看当前文档: http://sonata-project.org/bundles/admin/master/doc/reference/routing.html#create-a-route