Modx IF返回空白页面

时间:2016-08-24 05:33:38

标签: php date modx modx-revolution

我正在尝试检查服务器日期和时间以与资源的日期电视进行比较,但是当我尝试检查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>`
    ]]

我得到了资源的白页? 可能是什么问题,任何帮助都会很好:)

1 个答案:

答案 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;