Modx IF返回空白页

问题描述 投票:0回答:1

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

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

php date modx modx-revolution
1个回答
0
投票

将运算符更改为不等于,将操作数更改为1-除非填充了modx电视,否则它们实际上并不存在[即使已定义默认值]如果未填充电视,则代码段中可能会出现空值或错误。

要么

回显您的返回值,

if ( $dtA > $dtB ) {
  $active = 0;
}
else {
  $active = 1;
}

echo $active;

return; 

如果在将返回值解释为布尔值还是字符串时遇到问题?

您还可以更改代码段以检索当前资源DatumIsteka值,然后使用输出修饰符

或类似这样的东西:

<?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;
© www.soinside.com 2019 - 2024. All rights reserved.