2011-11-28 40 views
0

我用我自己的get片段擺脫$ _GET []參數:鏌鋣雷沃空變工況不返回變量

if ($set) { 
    $modx->setPlaceholder($param, $_GET[$param]); 
} else { 
    return $_GET[$param]; } 

當我使用[[!get? &param='mode' &set='1']]設置[[+mode]]變量下一個樣本正在對非空&mode參數:

[[+mode:eq=``:then=`[[*content]]`]] 

但適用於:

[[+mode:eq=``:then=`something else`]] 

任何想法如何可能以及如何避免這種情況?

+0

當然我用'[[!得到:當量= '':然後= [[*含量:省略號= '240':notags]]'? &param ='mode']]'現在。 Bnd我應該爲下一行使用'[[!get]]'還是'[[get]]'? – amrok

回答

0

$ set變量現在是'1',你能嘗試使用(bool)對$ set進行類型轉換,所以'1'變成TRUE嗎?

你也可以檢查$ param是否在代碼片段中爲空,並給它賦值,這樣你就可以檢查它而不檢查空值。

+0

當$ set ='1'' [[+ mode]]獲得它的值時。 – amrok

+0

我可以在代碼片段中進行檢查,但應該指定什麼值?如果我必須保留分配'undef'以防萬一數值爲空並應用:默認輸出過濾器? – amrok

0

我不明白你在問什麼,但在MODX片段語法中,你應該注意總是使用反引號(`)而不是撇號(')。

在這種情況下,輸出依賴於$ _GET傳遞參數

此外,你應該確保你的片段總是叫未緩存,可能你的佔位符太:

[[!get? &param=`mode` &set=`1`]] 

[[!+mode:eq=``:then=`[[*content]]`]] 
+0

在調用中,我使用反引號(')而不是撇號(')。必須將其替換爲stackoverflow。 – amrok