2014-02-21 71 views
0

MyHtmlHelperCakePHP的非法偏移串5.4

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 ..... 我該如何解決這個錯誤

回答

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上使用相同的技巧以解決您的問題。

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); 
}