String PHP5.4中的cakephp非法偏移量字符串

String PHP5.4中的cakephp非法偏移量字符串,string,cakephp,String,Cakephp,密特尔埃尔珀 public function url($url = null, $full = false) { if(empty($url['lang']) && isset($this->params['lang'])) { $url['lang'] = $this->params['lang']; } return parent::url($url, $full); } AppH

密特尔埃尔珀

public function url($url = null, $full = false) { 
        if(empty($url['lang']) && isset($this->params['lang'])) {
          $url['lang'] = $this->params['lang'];
        } 
        return parent::url($url, $full); 
   } 
AppHelper

public function url($url = null, $full = false) {

        if (empty($url['lang'])) {
            $url['lang'] = $this->params['lang'];
        }
        return parent::url($url, $full);


    }
当我跑的时候。应用程序警告cakephp非法偏移量lang。。。。。
如何修复错误

首先检查您测试的值是否已实际设置

更改此项:

if(empty($url['lang']) && isset($this->params['lang'])) {
    $url['lang'] = $this->params['lang'];
} 
致:

我不确定我是否有正确的方法来实现你的目标。在我的示例中,我正在检查$url['lang']的值是否未设置或为空。您可能希望检查它是否已设置且为空


在AppHelper上也使用相同的技术来解决您的问题。

您需要将is\u array$url添加到验证中。 或者您可能会得到“非法字符串偏移量‘语言’”

function url($url = null, $full = false) {

    if(!isset($url['language']) && is_array($url) && isset($this->params['language']))
    {
        $url['language'] = $this->params['language'];
    }

    return parent::url($url, $full);
}
function url($url = null, $full = false) {

    if(!isset($url['language']) && is_array($url) && isset($this->params['language']))
    {
        $url['language'] = $this->params['language'];
    }

    return parent::url($url, $full);
}