在奏鸣曲菜单中添加自定义控制器条目

Add a custom controller entry in the Sonata menu

我正尝试在 Sonata 的官方网站上关注 this section 以将自定义控制器添加到我的菜单中。

我有一个可以工作的控制器;

class HelloController extends Controller {

    /**
     * 
     * @Template()
     * @param type $name
     * @return type
     */
    public function indexAction($name)
    {
        $admin_pool = $this->get('sonata.admin.pool');

        return array(
            'admin_pool' => $admin_pool,
            'name' => $name
        );
    }
}

我已将控制器注册为我的 services.yml 文件中的服务;

app.hello_controller:
    class: AppBundle\Controller\HelloController

最后我将控制器路由作为一个项目添加到菜单中;

sonata_admin:
    dashboard:
        groups:
            Monitoring:
                items:
                    - app.hello_controller

但现在我收到了错误;

An exception has been thrown during the rendering of a template ("Admin service "app.hello_controller" not found in admin pool.") in SonataAdminBundle:Core:add_block.html.twig at line 5.

有人可以告诉我我缺少什么,以这种方式添加菜单项吗?

您需要修复您的配置。在您的示例中,您正在向菜单添加服务 ID 为 app.hello_controller 的管理服务。

您需要做的是添加以下配置以从控制器添加一个特定的路由/操作

config.yml

sonata_admin:
    dashboard:
        groups:
            Monitoring:
                items:
                    - route:     your_route_name
                      label:     Your Menu Item Label