2010-10-29 59 views
2

我正在爲我的項目使用zend框架,並且我有要求將路徑放在我想要的位置。例如: 我有一個路徑www.example.com/module/controller/action1,我想內部路由到www.example.com/module/controller/action2。是否可以在Zend框架中路由我的簡單URL(不指定模塊,控制器和動作)?

但是主要的問題是我不想使用我必須指定模塊,控制器和動作的函數[$ this - > _ forward('action2','controller','module');] ,簡單地說我是這樣的:$ this - > _ forward('module/controller/action2');.

如果有人有解決辦法,請提出建議。迫切需要我的項目。

感謝, 激凸

+0

你能解釋爲什麼你想讓url傳遞嗎? ZF不可能接受url,因爲它需要模塊/控制器/操作參數。否則,url需要傳遞給可以告訴模塊/控制器/動作的路由器。這對於一件簡單的事情來說是一個很大的開銷。 – 2010-10-30 13:22:50

回答

0

控制器如果是在同一個控制器和模塊爲您從轉發的第一個動作方法_forward()只能接受動作。

因此,在你action1Action()方法,你可以簡單地調用:

$this->_forward('action2');

如果你的第二個動作是不是在同一個模塊/控制器,你可以子類化Zend_Controller_Action到自己的「基地」應用程序控制器所有其他的動作控制器都繼承自我找到的ZF項目的一個良好實踐,然後創建另一個名爲_forwardFromUrl()或類似的東西,它將您的URL分開,並將它傳遞給_forward()(或者如果您只需要創建一個動作控制器助手這一件額外的東西)。

這個例子被簡化,假設你的$url總是會在格式module/controller/action

protected function _forwardFromUrl($url) 
{ 
    $parts = array_reverse(explode("/",$url)); 
    $this->_forward($parts[0],$parts[1],$parts[2]); 
} 

希望幫助!

相關問題