Symfony 页面绑定覆盖url挂钩
在自定义扩展中,我创建了几个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-
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
,而不被此绑定捕获
解决方案
在mypagebinding
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”。在上面添加绑定设置以防我做错了。明白了。为帮助干杯。