2012-04-18 97 views
0

所以我一直在盡我所能去儘可能地吸收Zend框架,這對我來說很新,從我第一次嘗試並做得很好以來,我大約兩週至今。Zend框架控制器到模塊路由

但是我遇到了一個小問題,我無法弄清楚。

因此,這裏的交易,我有一個標準的Zend框架項目與其中的一些模塊。就像這樣:

- Project 
- - Application 
- - - configs 
- - - controllers 
- - - - IndexController 
- - - - WMSController 
- - - forms 
- - - layouts 
- - - models 
- - - modules 
- - - - content 
- - - - - controllers 
- - - - - - IndexController 
- - - - - models 
- - - - - views 
- - - - - Bootstrap 
- - - views 
- - - bootstrap 
- - public 

etc.. 

現在我在爲WMSController至極的視圖設置一個簡單的測試環節應該有人直接就klicking的內容模塊的IndexController。現在

<a href="wms/content"> test link to content module</a> 

,你很可能會看到這個鏈接是行不通的,因爲它是對本地主機/ WMS /內容這將是在WMSController內容動作不此時存在指向。

現在我想要做的是讓WM /內容實際上指向內容模塊的IndexController。爲什麼?那麼我只是不希望用戶輸入localhost/content來訪問WMS的一部分內容模塊。我想迫使他們先通過WMS控制器。

我已經閱讀了許多有關使用引導程序或自動加載器進行路由選擇的解決方案,但幾乎所有這些都只是幫助您將特定的URL指向特定控制器中的特定操作。

我想要的是指向特定模塊中特定控制器中的特定操作的url。

注意:所有其他控制器和視圖仍然是默認生成的版本,但不會對它們進行任何更改!

如果任何人都可以告訴我一個這樣做的代碼示例,將不勝感激!

+0

使用[Router](http://framework.zend.com/manual/en/zend.controller.router.html)? – prodigitalson 2012-04-18 13:25:20

+0

類似的問題。 http://stackoverflow.com/questions/9372055/cannot-load-modules-index-action-for-zend-framework-module/9436169#9436169經過答案,我猜它是apache的mod_rewrite模塊。 – Weltschmerz 2012-04-18 14:44:23

回答

1

如果我理解正確的話,你只是想/wms/content指向模塊內容控制器指數行動指數。這是一個簡單的路由器會工作(至少直到你想獲得更復雜)

在你的application.ini添加這些線路的情況下:

resources.router.routes.content.route = "wms/content" 
resources.router.routes.content.defaults.module = "content" 
resources.router.routes.content.defaults.controller = "index" 
resources.router.routes.content.defaults.action = "index" 

這是建立一個最簡單的方法自定義路線。
* 注意: *左邊的第四個參數是路由的名稱,所以如果您使用允許使用路由名稱的方法(例如url()helper),則可以使用路由名稱。

這是你將如何使用命名的路線,我個人可能會考慮重新命名我的模塊WMS(如果可能的話和實際),並從默認的指數控制器在重定向那裏。因爲一旦你開始使用命名和自定義路線,很難退出...

0

從你的問題,你

想迫使他們得到線槽WMS控制器首先

你可以做一兩件事。無論你想在WMSController中做什麼,只要用戶輸入localhost/content/**,你都可以將它放在父類中,用於模塊中的所有控制器:'內容'。這樣,您就可以檢查東西/執行操作,每次請求談到這個控制器(不管用戶想轉到其他模塊。)

類Content_AnyController擴展MyControllers_Controller_Action_Admin { .... }

其中

class Reviewmo_Controller_Action extends Zend_Controller_Action{ 
    public function init(){ 
    //Things you want to do each time 
    } 

} 

這就是我想你想,如果你想只是簡單的重定向到WMSController的ContentAction你可以簡單地重定向到控制器來實現,因爲。