2013-03-11 106 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