我已經完成了CMS的一半,其中的URL是一個基於頁面標題的搜索引擎優化友好名稱。有一部分需要使用特定的控制器。因此,例如:如何在Zend Framework中動態更改控制器?
test.com/page1(使用索引控制器) test.com/page2(使用索引控制器) test.com/page3(使用不同的控制器) test.com/page4(使用索引控制器)
我可以添加一條路線,說「page3」將使用「不同」控制器,但CMS的用戶需要能夠更改URL的名稱和seo,因此它當前是「page3」 「稍後它可能會被改變,這會破壞我的路由規則。
什麼是最好的方法(無論是前端控制器插入或其他)來抓住請求,並從數據庫中拉出要使用的控制器(SQL會像「選擇控制器從菜單,其中seo ='page3'」),那麼在Zend設置要使用的控制器之前將它設置爲控制器?
任何幫助或洞察力非常感謝。
感謝您的回覆。 你提到的函數應該是否是frontController插件的一部分? 假設我使插件名爲updateControllerSeo,那麼函數preDispatch和_getController將成爲該類插件的一部分? 再次感謝。 – Ben 2009-11-19 19:36:30
是的。他們應該在插件。但我會建議把它們放在routeShutdown()中,因爲在這種情況下,它們會在每個動作之前被調用(如果你使用動作視圖hleper,或者...) – 2009-11-19 22:26:31
在插件中創建所有這些方法。如果它們不在你的插件類中,你不能用($ this)調用它們。並且需要preDispatch()或routeShutdown(),因爲它們是在調度週期內調用的「掛鉤」 – 2009-11-20 09:33:27