我正在开发一个 Symfony 1.4 项目,当我这样做时:
url_for('');
我期望获得index.php
控制器的 URL,或者至少http://domain/
但我得到了这个:
/sfTCPDF
sfTCPDF
是我在这个项目中的一个插件,在我的项目中config/ProjectConfiguration.class.php
使用如下:
class ProjectConfiguration extends sfProjectConfiguration {
public function setup() {
$this->enablePlugins('sfTCPDFPlugin');
}
}
当我禁用插件时,我得到了预期的结果:
$url = url_for('');
> /
或者当我像这样使用它时(不管插件是否启用):
$url = url_for('/');
> /
我不明白为什么插件会导致(或者即使是插件错误)。
有什么建议么?我可以搜索和替换整个项目url_for('')
并将其放入'/'
但我真的很想了解为什么会发生这种情况。
经过一番研究:
我发现当url_for
函数被调用时,程序是下一个:
lib/vendor/symfony/lib/helper/UrlHelper.php url_for()
lib/vendor/symfony/lib/helper/UrlHelper.php url_for2()
lib/vendor/symfony/lib/helper/UrlHelper.php url_for1()
lib/vendor/symfony/lib/controller/sfWebController.class.php gen_url()
lib/vendor/symfony/lib/routing/sfRoute.class.php generate()
在最后一个中,它得到了$this->pattern
模式所在的位置sfTCPDF/:action
这意味着一些路由正在播放。继续我的研究,我发现该插件有一个routing.yml
:
sfTCPDF:
url: /sfTCPDF/:action
param: { module: sfTCPDF, action: test }
如果我删除此路由,一切都会按预期工作。
现在的问题是:插件何时创建具有模式的路由对象,sfTCPDF
为什么?