如何在资源中使用Chunk和Snippet,但在使用MODx Revolution加载页面时仅返回Chunk?

时间:2014-05-07 12:35:55

标签: php code-snippets modx-revolution chunks

我有一个资源(63)应该从一个表单(块)中获取一个值,该表单稍后将被一个将其除以4的片段处理。它会在同一页面上显示结果,如下所示:

在资源中:

[[$divisionForm]]
[[!divisionFormHandling]]

divisionForm Chunk:

<form action="[[~63]]" method="post">
  <input type="text" name="value"/>
  <input type="submit" name="division" value="Submit" />
</form>

divisionFormHandling片段:

<?php
    $var = $_POST["value"];
    $division = $var / 4;

    if ($division != 2) {
        $error_message = 'It is not the number 8!';
        $output = $error_message;
        return $output;
    }
    else {
        $playing_around = $var + 1;
    }

    working_around = $var * 2;

    $output = 'Playing: '.$playing_around.'<br />';
    $output .= 'Working: '.$working_around.'<br />';

    return $output;
?>

所以,当我在表单中插入8并提交时,我在屏幕上有以下结果:

比赛:9 工作:16

当我插入任何其他数字时,我得到以下结果,就像预期的那样:

不是8号!

但是当我第一次访问该页面或刷新它时,我仍然收到error_message。我的问题是:我怎么能重写代码,所以在第一次或刷新后我只看到表单(即Chunck)而不是错误消息(来自Snippet)?

我很确定有更简洁的方法可以做到这一点,但我需要帮助。

非常感谢!

1 个答案:

答案 0 :(得分:1)

if (isset($_POST["value"])) { // here first time checking

    $var = (int) $_POST["value"]; // (int) is for security purpose

    // all other your code here ...

}