扩展父包并保持其路由

时间:2015-07-29 12:20:09

标签: symfony routing

我正在尝试创建核心AppBundle和顶部的扩展(主要是UI中的更改)。我创建了以下结构:

src/
├── AppBundle
│   ├── AppBundle.php
│   ├── Controller
│   │   └── DefaultController.php
│   └── Resources
│       └── views
│           └── Default
│               └── index.html.twig
└── HszBundle
    ├── Controller
    │   └── MenuController.php
    ├── HszBundle.php
    └── Resources
        ├── public
        │   └── less
        │       └── hsz.less
        └── views
            └── Default
                └── index.html.twig

Main /app/config/routing.yml从注释中加载规则:

app:
    resource: "@AppBundle/Controller/"
    type:     annotation

hsz:
    resource: "@HszBundle/Controller/"
    type:     annotation

AppBundle\Controller\DefaultController包含一条规则:

/**
 * Class DefaultController
 * @package AppBundle\Controller
 */
class DefaultController extends Controller
{
    /**
     * @Route("/", name="root")
     * @Template
     */
    public function indexAction()
    {
        return [];
    }
}

HszBundle\Controller\MenuController包含:

/**
 * Class MenuController
 *
 * @package HszBundle\Controller
 * @Route("/menu")
 */
class MenuController extends Controller
{
    /**
     * @Route("/list")
     * @Ajaxable
     */
    public function listAction()
    {
        return [];
    }
}

HszBundle已设置getParent方法以返回AppBundle。 问题是AppBundle路由被忽略并仅包含:

hsz_menu_list         ANY    ANY    ANY  /menu/list                        

如果getParent未被覆盖,则返回所有路线:

root                  ANY    ANY    ANY  /                                 
hsz_menu_list         ANY    ANY    ANY  /menu/list              

但没有扩展功能。

如何在扩展捆绑包时导入所有AppBundle路由?

1 个答案:

答案 0 :(得分:1)

据我所知,这是不可能的。阅读文档How to Override any Part of a Bundle