2013-03-11 109 views
0

任何人都知道在SF1.0中routing.yml中的以下'class'条目是否可能?我尝试添加它并覆盖一些方法,如getInstance()getCurrentRouteName(),但它们从未被调用,即使我正在手动调用它们。Symfony 1.0 - 扩展sf路由

checkout_landing: 
    class: CustomRoute # Can I do this in SF1.0? 
    url: /checkout/landing/:k/* 
    param: { module: sharedCheckout, action: landing } 

我们已经在SF1.2中实现了这种'per-route'自定义类配置,但它似乎不适用于SF1.0。我怀疑SF1.0,我将不得不添加一个自定义类的条目到factories.yml文件,这将影响所有路线。

奖金问题:任何人都可以在SF1.0中模拟'extra_parameters_as_query_string'?眼下,随着上述URL条目,GET PARAMS转换为pseduo子迪尔斯,例如查询字符串,如:

$params = array('foo' => 'bar', 'pet' => 'dog'); 

$url = sprintf('@checkout_landing?%s', http_build_query($params)); 

// Looks like: 

http://example.com/checkout/landing/foo/bar/cat/dog 

// I need it to look like 

http://example.com/checkout/landing?foo=bar&pet=dog 

回答

0

我浏览了编译后的缓存代码中的路由,并且确实在SF1.0中没有基于yaml文件中'Class'条目的自定义对象引用。但是,当我查看SF1.4中生成的路由的编译缓存代码时,自定义对象可用。

由于升级不是一种选择,我选择了手动生成旧的方式的网址。

+0

顺便说一句,你能否详细说明为什么升级不是一种选择? AFAIK所有你需要做的就是改变''''lib/symfony'''的内容 - 即使你坚持PEAR安装,你总是可以将'''''''''''''''''''''''sf_lib_dir'''参数更改为忽略它。不要试图巨魔,真正好奇。 – Raise 2013-03-27 04:26:34

+0

我帮助支持经常处于繁忙流量负载下的大型代码库。将功能从SF1.0移植到SF1.4将是一个大型项目,例如将表单移动到窗体等等。商业方面无法证明开发时间和风险损失的成本。我们尽可能地进行移植,但是我们可能会支持至少另外18-24个月的1.0 api:( – 2013-05-09 00:11:59

+0

这就是问题所在,您没有正确阅读我的答案 - 不要升级到1.4,升级到1.3 - 使用sfCompatPlugin可以保证向后兼容,然后你可以扩展到sf1.2 + code的版图,而不用担心太多。sf1.3本质上是sf1.0,有一些额外的功能。 – Raise 2013-05-11 13:38:44

1

当你怀疑,无论这些事情是可能的sf1.0没有任何决策您建议自定义扩展sfRouting(在factories.yml),或为extra_parameters_as_query_string添加sf1.2 +的功能。

我建议最简单的选项,供您是升级到sf1.3(sf1.3.11)的最后一个稳定版本,并使用捆绑sf10CompatPlugin帮你模仿你在现有的应用程序中使用的sf1.0功能,同时加入您希望从sf1.3核心获得的sf1.2 +功能。

这样做很少有兼容性错误,我自己在几十个项目中使用它,没有任何问题。

+0

对于我的个人项目,我使用SF1.4完全避免了这个问题,但对于工作我们无法从SF1.0升级。只是想看看是否有人有工作。 – 2013-03-12 16:42:43