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