【发布时间】:2014-06-24 20:27:21
【问题描述】:
我正在开发一个 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模式的路由对象,为什么?
【问题讨论】:
标签: php symfony-1.4 url-for