Symfony 页面绑定覆盖url挂钩

Symfony 页面绑定覆盖url挂钩,symfony,routing,bolt-cms,Symfony,Routing,Bolt Cms,在自定义扩展中,我创建了几个URL挂钩,如下所示: namespace MyExtension; class Extension extends \Bolt\BaseExtension { public function initialize() { // audio sample management $this->app->match("/foo", array($this, 'foo')); $this-

在自定义扩展中,我创建了几个URL挂钩,如下所示:

namespace MyExtension;

class Extension extends \Bolt\BaseExtension
{   

    public function initialize()
    {
        // audio sample management
        $this->app->match("/foo", array($this, 'foo'));
        $this->app->match("/bar", array($this, 'bar'));
    }

    function foo()
    {
        // ...
    }

    function bar()
    {
        // ...
    }
}
我可以通过如下url访问这两个函数:

  • example.com/foo
  • example.com/bar
。。。两者都将执行

但是,当我将页面绑定添加到
routing.yml
中时,它会中断,并尝试查找
foo
bar
,就像它们是
页面一样

pagebinding:
  path: /{slug}
  defaults: { _controller: 'Bolt\Controllers\Frontend::record', 'contenttypeslug': 'page' }
  contenttype: pages
我怎样才能拥有
foo
bar
,而不被此绑定捕获

解决方案

在my
pagebinding
route之前添加了以下路由代码段

foobinding:
  path: /foo
  defaults: { _controller: 'MyExtension\Extension::foo' }

是的,这是一个粘性的,并且是Silex/Symfony中的“设计”。控制器路由堆叠,第一场比赛获胜

在Bolt中,
initMountpoints()
(其中设置了
routes.yml
路由)在
initExtensions()
之前被调用,因此应用程序路由不会被设计不良或恶意的扩展清除

我在一次安装中所做的是在
routing.yml
中设置扩展路由,并将控制器定义为
MyExtension\extension

更新
下面是我正在使用的routing.yml文件中的内容,但是是在Bolt 2 beta上

站点地图:
路径:/sitemap.xml
默认值:{u controller:'Bolt\Extension\Gawain\CustomSitemap\controller\Sitemap::Sitemap'}


请注意,扩展名称空间仅符合版本2标准,在“工作”方面并不特殊。

为此,您必须在扩展中做一些特殊的事情吗?我尝试过,但找不到控制器“MyExtension\Extension”。在上面添加绑定设置以防我做错了。明白了。为帮助干杯。