2009-12-28 69 views
0

我有一個顯示動態頁面定義路線:傳遞PARAMS到Symfony的路線

page_show: 
    url:  /:domain_slug/:slug 
    class: sfPropelRoute 
    options: 
    model: Page 
    type: object 
method: doSelectByDomain 
    param: { module: page, action: show } 
    requirements: 
    sf_method: [get] 

這個偉大的工程,但現在我想我的主頁URI路由到特定頁面。爲此,我假設我必須通過我想要顯示爲主頁的頁面的:domain_slug:slug值。這很好,但我似乎無法追查任何文檔或示例,告訴我如何去做。

是否可以在路徑中指定特定的變量值?在這種情況下,我想通過:domain_slug => portal, :slug => dashboard(該語法不起作用,順便說一句)。從本質上講,我想創建一個類似如下的主頁路線:

homepage: 
    url: /
    class: sfPropelRoute 
    param: { module: page, action: show, array(:domain_slug => portal, :slug => dashboard) } 
    options: 
    model: Page 
    type: object 
    method: doSelectByDomain 

但是,它不同,它,你知道,工作。 :-)我想我可以創建一個簡單的路由到不同的方法,手動修改請求參數並轉發到executeShow()方法,但如果有更優雅的解決方案,我寧願避免這種攻擊。

謝謝。

回答

0

我從來沒有找到一種方法來做到這一點(或者我可能無法正確地做到這一點)。我的解決方案是創建的路線,並通過它通過做工作,以指定相應的頁面信息的自定義方法:

homepage: 
    url: /
    class: sfPropelRoute 
    options: 
    model: Page 
    type: object 
    method: doSelectHomepage 
    param: { module: page, action: show) } 
    requirements: 
    sf_method: [get] 

doSelectHomepage()方法做了所有我希望我能夠做的工作通過硬編碼路由本身的值。

+0

這太可怕了。這真的是解決方案嗎? symfony就是這樣一個愚蠢的框架......我在同一條船上,真的不想這樣做......你應該只是能夠傳遞參數:{misc_arg:value}根據我的一切在閱讀,但它不起作用。哎呀 – Tom 2010-11-05 19:07:45

3

您可以在路線的param鍵定義值...例如:

homepage: 
    url: /
    class: sfPropelRoute 
    param: { module: page, action: show, domain_slug: portal, slug: dashboard} 
    options: 
    model: Page 
    type: object 
    method: doSelectByDomain 

至少那它是如何與非推進/教義路線的作品。我認爲它應該與框架中的任何類型的路線相同。

+0

是的,我也試過。當工作流到達我的自定義處理程序方法('doSelectByDomain')時,沒有參數。數組完全是空的。 – 2009-12-28 14:58:25

0

其實它確實有效,它只是路線定義的順序。第一個答案是正確的。如果您在「page_show」規則之前添加了「主頁」規則,它可能適用於您。所以也許Symfony並不像我想的那樣愚蠢......不,不,它是。這並不壞。