2012-07-23 68 views
1

在插件的使用:ExpressionEngine插件返回JSON數據

$this->return_data = json_encode(array('loggedin' => $LoggedIn, 'Cust_ID' => $Participant_ID)); 

在模板我這樣稱呼它

$custinfo = {exp:user_loggedin}; 

它返回它是這樣的:

$custinfo = {"loggedin":"no","Cust_ID":-1}; 

而且我得到這個錯誤:

PHP Parse error: syntax error, unexpected '{' in expressionengine/libraries/Functions.php(642) : eval()'d code on line 656 

如果我使用

$custinfo = json_decode({exp:user_loggedin}) 

我得到這個錯誤:

PHP Parse error: syntax error, unexpected '{', expecting ')' in expressionengine/libraries/Functions.php(642) : eval()'d code on line 656 

任何想法?

+0

這可能是一個解析順序問題。你有輸入或輸出PHP解析? – AllInOne 2012-07-23 17:27:29

+0

在使用此代碼的模板中輸出。 – MB34 2012-07-23 18:07:18

+0

更改爲輸入不起作用,錯誤相同。 – MB34 2012-07-23 18:09:37

回答

0

我的猜測是,你需要引用您的變量:

$custinfo = "{exp:user_loggedin}";

+0

不可以。得到意外的T_STRING錯誤。 – MB34 2012-07-23 16:45:55

+0

這是什麼被返回:$ custinfo =「{」loggedin「:」no「,」Cust_ID「: - 1}」; – MB34 2012-07-23 16:46:15

+0

PHP設置爲解析輸入或輸出?如果您已經在使用自定義插件,那麼您可以將您在模板中使用PHP進行的其他操作移動到同一插件中的另一個方法中嗎?您可以通過這種方式避免許多解析順序問題。 – 2012-07-23 19:35:53

0

我想你已經具有解析順序問題,並引述問題的組合。

假設您正在處理輸出上的PHP。

  1. 插件將運行
  2. 然後定期EE代碼
  3. 那麼PHP

德里克,確認報價的問題,建議:

$custinfo = "{exp:user_loggedin}"; 

但是那不是翻譯成階段3的以下代碼?

$custinfo = "{"loggedin":"no","Cust_ID":-1}"; 

這看起來像是有效的PHP代碼嗎?不對我。

您可能是不得不逃離這些報價或使用HEREDOC或東西...

$custinfo = <<<HEREDOC 
{"loggedin":"no","Cust_ID":-1} 
HEREDOC; 
+0

我們正在放棄此插件的使用,並改用Cookie。 – MB34 2012-07-23 20:05:59