Конфигурацию маршрутизации для этого администратора сонаты можно найти в
// 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', который содержит контроллер, который должен расширять действия dashboard. Затем попробуйте следующее:
Создание контроллера в /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 }
- Откройте файл конфигурации маршрутизации приложения и добавьте следующее после конфигурации sonata, чтобы оно переопределило его
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
Отказ от ответственности просто чтобы вы знали, что я не использовал это в проекте. Я просто проверяю это локально, и это сработало. Возможно, это не лучшее решение!
Надеюсь, это поможет