2014-06-09 43 views
0

如前所述使用requestAction從殼牌,當我在shell中使用:不能在CakePHP 2.5

$this->requestAction('/sites/zaz/option1'); 

的動作不會被觸發。爲了測試這個,我嘗試過:

public function zaz($option1 = null) { 
     CakeLog::write('acces', 'action triggered'); 
     return 'got it !'; 
    } 

而且這個動作沒有完成,也沒有寫任何日誌。我所有的其他日誌都可以工作。

所以,我想:

$this->requestAction('/sites/actionwhichdoesntexist/option1'); 

而且我得到了一個錯誤,說明該操作不存在。

我真的需要使用requestAction,因爲我有一個模型/控制器,並且此操作通常測試資源是否仍然存在。我想爲了順利辦理了「要求」方面使用requestAction,這樣我會建立一些更強大的:

if(empty($this->request->params['requested'])) 
      $this->redirect(array('controller'=>'proxies', 'action'=>'index', 'admin'=>true)); 
     else 
      return true; 

我試着用2.4.1和2.5,沒有恰好,沒有輸出給定,即使我在這個動作中放了一個'die()'。

+0

2件事1)你可能正在訪問一個_different_ action,或者beforeFilter或一個組件干擾 - 它取決於定義的路由和beforeFilter /組件邏輯2)**不要使用requestAction **你所描述的 - 將邏輯放在模型方法中,並調用模型method_。 – AD7six

+0

謝謝,這確實是beforeFilter失蹤(需要記錄)。但是在我想要執行的操作中沒有與數據/ sql相關的內容,這就是爲什麼我最初不想將它放入模型中的原因。 – mattspain

回答

0

正如第一條評論所述,我應該檢查beforeFilter函數。