2014-12-02 60 views
0

我有從不同視圖調用的視圖。客戶編輯視圖可以從客戶列表中調用,客戶可以從訂單內搜索等等。其中一些視圖是其他包含用於添加,編輯或刪除數據的表單的簡單視圖。在用戶完成他必須在該表單上的內容之後,他應該被重定向到調用表單或其他表單。CakePHP:視圖和控制器的靈活重定向

使用$this->referer()是行不通的一些導航必須是這樣的:

列表順序 - >編輯訂單 - >刪除訂單 - >列表的順序。

我會很好的爲每個呼叫定義重定向,所以我試圖使用查詢字符串並將?redirectTarget=<wherever>添加到每個鏈接或重定向。對於我做了一個控制器功能

在AppController.php

public function getRedirectTarget() { 
    if ($this->request->query('redirectTarget')) { 
     return $this->request->query('redirectTarget'); 
    } else { 
     return array(
      'controller' => 'pages', 
      'action' => 'home' 
     ); 
    } 
} 

這適用於因爲我可以用我的控制器getRedirectTarget()但我不能訪問視圖內的函數建立鏈接形式。 (在leas我不這樣做Can you call a controller function from a view in CakePHP?)在頂部的例子中,我必須將信息從訂單列表傳遞到編輯視圖以構建鏈接和表單操作的底層控制器。

現在我在腦海中有不同的揣測,但沒有一個我真的很高興。我不知道要走哪條路。

  • CakePhp中有沒有找到我還沒找到的東西?
  • 使用$ this-> requestAction?
  • 改變一切形式和按鈕,並在控制器中做所有重定向?
  • 有沒有辦法爲每個視圖創建一個變量?

因爲這在我看來像一個comon的要求,我對CakePHP很新,我要求你的建議。

回答

0

使用requestAction應該是最好的方法。

在視圖中,可以有類似

$redirect = $this->requestAction('/mycontroller/requestAction'); 
$url = $this->Html->link('Continue', $redirect)); 
+0

謝謝你,爲我工作。由於這是一個非常小的應用程序,因此無法對性能進行任何說明 – Axx 2014-12-06 08:57:11

相關問題