2011-11-28 51 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