2016-07-20 92 views
2

我使用cakephp。在所有的頁,有這樣的警告:cakephp:strtolower()期望參數1是字符串,數組給定

警告(2):用strtolower()預計參數1是字符串,數組給定[CORE/SRC /控制器/組件/ AuthComponent.php,管線337]

在管線337:

protected function _isAllowed(Controller $controller) 
{ 
    $action = strtolower($controller->request->params['action']); 
    return in_array($action, array_map('strtolower', $this->allowedActions)); 
} 

如何解決這個問題呢?

+1

向我們展示如果用'var_dump($ controller-> request-> params ['action'])exit;';'替換'strtolower'行;'也告訴我們你要做什麼。 – BeetleJuice

+1

可能'$ this-> allowedActions'包含一個子數組。請考慮編輯您的問題,添加'$ this-> allowedActions'的調試 – arilia

回答

2

我理解了警告的原因並解決了它。我從

$this->Auth->allow(['display','add',['controller'=>'options','action'=>'add']]); 

_isAllowd功能檢查當前使用的動作是否是無需驗證訪問。通過在AppController中使用此行來刪除此警告。

0

請檢查$this->allowedActions變量是一維數組還是有子數組也使用pr函數。

pr($this->allowedActions); 
die(); 

注意多維數組不是通過內置的PHP函數與array_map()工作。您需要製作自定義功能,如custom_strtolower(),並且必須在array_map()中傳遞此功能。

我希望你能調試你的自我,我的訣竅會幫助你。

相關問題