Это не дубликат переопределить единственный маршрут в symfony2. Пожалуйста, проявите терпение и внимательно прочтите мой вопрос.
Моя проблема отличается от вопроса выше. Итак, мое приложение Symfony имеет стандартную структуру. НО это настроено определенным образом.
app / config / routing.yml содержит несколько маршрутов пакетов, например:
_project_custom1:
resource: "@ProjectCustom1Bundle/Resources/config/routing.yml"
prefix: /custom1
_project_custom2:
resource: "@ProjectCustom2Bundle/Resources/config/routing.yml"
prefix: /custom2
Каталог src / имеет два пакета и следующую структуру, например
Common/AdminBundle/Resources/config/routing.ymlCommon/AdminBundle/Resources/config/routing_dashboard.yml
routing.yml содержит следующие строки:
admin_dashboard_content:
resource: "@CommonAdminBundle/Resources/config/routing_dashboard.yml"
prefix: /dashboard
routing_dashboard.yml содержит:
admin_dashboard_license_content:
path: /license-content
defaults: { _controller: CommonAdminBundle:Dashboard:licenseContent }
Следующий пакет - Custom bundle. Как можно расширить DashboardController, переопределить licenseContentAction и переопределить только один (/license-content) маршрут и заставить Symfony использовать мою настраиваемую конфигурацию пакета?
Копирование той же структуры не работает. По моему объяснению я написал примерно так:
<?php
namespace Custom\Custom1\Controller;
use Common\AdminBundle\Controller\DashboardController as BaseController;
class DashboardController extends BaseController
{
public function licenseContentAction()
{
//return parent::licenseContentAction();
die("HELLO!");
}
}
Как я могу создать файл маршрута для работы расширенного метода?




Все, что вам нужно сделать, это добавить эти строки в файл app/config/routing.yml.
admin_dashboard_license_content:
path: /dashboard/license-content
defaults: { _controller: CustomBundle:Dashboard:licenseContent }
И создайте DashboardController, расширяющий базовый контроллер Symfony с помощью метода licenseContentAction в пространство имен CustomBundle.
А теперь волшебство ...
Если вы хотите сохранить путь, вам нужно добавить эти строки в начало файла routing.yml. Название маршрута должно быть другим (уникальным), и путь, конечно же, должен быть таким же, как перекрываемый.
Symfony ищет путь и сразу же, когда он совпадает, запрос перенаправляется на соответствующее действие контроллера.
Если вы хотите изменить путь, добавьте эти строки в конец файла routing.yml. Название маршрута должно быть таким же. Я не уверен, существует ли ранее определенный маршрут (путь), я полагаю, что да, и если запросы, сделанные с этим путем, все еще обрабатываются ...
Symfony собирает маршруты в массив, где ключом является имя маршрута. При добавлении маршрута с таким же именем в конец файла ранее определенный маршрут отменяется.