我正在尝试检查服务器日期和时间以与资源的日期电视进行比较,但是当我尝试检查IF语句时,我总是得到空白页面,这是我需要的。
我有这样的代码段
<?php
function getDatetimeNow() {
$tz_object = new DateTimeZone('Europe/Belgrade');
$datetime = new DateTime();
$datetime->setTimezone($tz_object);
return $datetime->format('Y\-m\-d\ h:i:s');
}
$currentDate = getDatetimeNow();
$dtA = new DateTime($currentDate);
$dtB = new DateTime($date);
if ( $dtA > $dtB ) {
$active = 0;
return $active;
}
else {
$active = 1;
return $active;
}
但在页面上如果我尝试这样
[[!CheckCurrentDate? &date=`[[*DatumIsteka]]`]]
我根据电视价值获得1或0 * DatumIsteka,一切正常,但是当我尝试比较这样的时候
[[!If?
&subject=`[[!CheckCurrentDate? &date=`[[*DatumIsteka]]`]]`
&operator=`equals`
&operand=`0`
&then=`<script>
$("#tab3").html("<p>U Pripremi</p>");
</script>`
]]
我得到了资源的白页? 可能是什么问题,任何帮助都会很好:)
答案 0 :(得分:0)
将您的运算符更改为不相等且您的操作数为1 - modx电视实际上不存在,除非它们已填充[即使它们已定义默认值]您可能会在您的代码段中获得空值或错误没有填充。
OR
回显你的回报值,
if ( $dtA > $dtB ) {
$active = 0;
}
else {
$active = 1;
}
echo $active;
return;
IF可能在将返回值解释为boolean vs. string时遇到问题?
您还可以更改代码段以检索当前资源DatumIsteka值,然后使用output modifiers。
或类似的东西:
<?php
function getDatetimeNow() {
$tz_object = new DateTimeZone('Europe/Belgrade');
$datetime = new DateTime();
$datetime->setTimezone($tz_object);
return $datetime->format('Y\-m\-d\ h:i:s');
}
$currentDate = getDatetimeNow();
$dtA = new DateTime($currentDate);
$date = $modx->resource->getTVValue('DatumIsteka');
$dtB = new DateTime($date);
if ( $dtA > $dtB ) {
$active = $modx->getChunk('chunkName');
// chunkName = <script>$("#tab3").html("<p>U Pripremi</p>");</script>
}
else {
$active = 1;
}
echo $active; // you have to echo it if you are passing a string
return;