php 5.4中的cakephp非法偏移字符串

时间:2014-02-21 01:38:25

标签: string cakephp

MyHtmlHelper

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 ..... 我该如何解决这些错误

2 个答案:

答案 0 :(得分:0)

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

改变这个:

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

要:

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

我不确定我是否以正确的方式解决了你想要实现的目标。在我的示例中,我要检查$ url [' lang']的值是否未设置或为空。可能是您要检查它是否已设置且为空。

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

答案 1 :(得分:0)

您需要在验证中添加is_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);
}