4

我有一个项目,我正在symfony 2使用SonataAdminBundle我的后端。我如何覆盖 adashboardAction()以扩展它们以获得更多功能?

4

1 回答 1

8

这个奏鸣曲管理员的路由配置可以在

// vendor/bundles/Sonata/AdminBundle/Resources/config/routing/sonata_admin.xml
    <route id="sonata_admin_dashboard" pattern="/dashboard">
        <default key="_controller">SonataAdminBundle:Core:dashboard</default>
    </route>

假设您有一个名为“My/AdminBundle”的包,其中包含应该扩展仪表板操作的控制器。然后尝试以下操作:

  1. 在 /My/AdminBundle/Controller/CoreController.php 中创建一个控制器

    namespace My\AdminBundle\Controller;
    
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
    use Symfony\Component\HttpFoundation\Response;
    use Sonata\AdminBundle\Controller\CoreController as BaseCoreContBroller;
    
    class CoreController extends BaseCoreContBroller
    {
    
        public function dashboardAction()
        {
            // your custom code
    
            // call parent method
            parent::dashboardAction();
        }
    }
    
  2. 打开位于 /My/AdminBundle/Resources/config/routing.yml 的捆绑路由配置文件(您可能有不同的配置格式,例如 xml)

奏鸣曲管理员仪表板:
     模式:/仪表板
     默认值:{ _controller: MyAdminBundle:Core:dashboard }
  1. 打开应用路由配置文件,在奏鸣曲配置后添加如下内容,使其覆盖
行政:
    资源:'@SonataAdminBundle/Resources/config/routing/sonata_admin.xml'
    前缀:/admin

_奏鸣曲_管理员:
    资源:。
    类型:奏鸣曲管理员
    前缀:/admin

我的管理包:
    资源:“@MyAdminBundle/Resources/config/routing.yml”
    前缀:/admin

免责声明只是为了让您知道我没有在项目中使用它。我只是在本地检查它并且它有效。这可能不是最好的解决方案!

希望这可以帮助

于 2012-01-04T22:34:40.903 回答