我有一个symfony 2
的项目,我的后端使用SonataAdminBundle
。如何覆盖dashboardAction()
以扩展它们以获得更多功能?
答案 0 :(得分: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”的软件包,其中包含应扩展dashboardActions的控制器。然后尝试以下方法:
在/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();
}
}
打开位于/My/AdminBundle/Resources/config/routing.yml的捆绑路由配置文件(您可能有不同的配置格式,例如xml)
sonata_admin_dashboard: pattern: /dashboard defaults: { _controller: MyAdminBundle:Core:dashboard }
admin: resource: '@SonataAdminBundle/Resources/config/routing/sonata_admin.xml' prefix: /admin _sonata_admin: resource: . type: sonata_admin prefix: /admin MyAdminBundle: resource: "@MyAdminBundle/Resources/config/routing.yml" prefix: /admin
免责声明只是让您知道我没有在项目中使用过此功能。我只是在本地检查它,它工作。这可能不是最佳解决方案!
希望这有帮助