【问题标题】:ModX custom package xPDO statement not evaluating correctlyModX 自定义包 xPDO 语句未正确评估
【发布时间】:2013-02-21 13:45:09
【问题描述】:

我正在开发一个自定义包,它接受表单输入,将其与表格进行比较并在屏幕上显示相关信息,我正确设置了传输和架构(希望如此!我遵循 BobsGuides.com 上的指南) 我可以毫无问题地从表中读取。当我开始实现表单输入时,我的问题就开始了。

基本上,我发布的会话变量似乎从未收到,因此 isset 永远不会评估为 true,我只是一遍又一遍地看到表单。

我才刚刚开始使用 PHP,并且在 xPDO 方面完全是新手,所以我接受可能不止一些我没有注意到的事情,但如果有人能指出我正确的方向,我会万分感激。

<?php
    $path = MODX_CORE_PATH . 'components/dataease/';
    var_dump($_POST['submit']);
    var_dump($_POST['accNo']);

    // get POST variable this is captured
    $accNo = $_POST['accNo'];
    $output = '';


// Check if form has been submitted
if (isset($_POST['submit'])) {
    // Get info from the database
    $query = $modx->newQuery('accno');
    $query->select($modx->getSelectColumns('Dataease','Dataease','',array('*')));
    $query->where(array('accNumber:LIKE' => '$accNo'));
    var_dump($query);
    // Place it into a variable for output
    if (!$query) {
        return "Query failed";
    } else {
    $dataease = $modx->getCollection('Dataease',$query);
    // Count the returned rows, should only ever be 1
    $output .= '<p>Total: '. count($dataease) . '</p>';

    // Show the found data
    foreach($dataease as $sql) {
        $fields = $sql->toArray();
        $output .= $modx->getChunk('showData', $fields);
    } 
}
return $output;

} else {
    // Get the form chunk
    $form = $modx->getChunk('dataEntryForm');
    return $form;

}

这是我的表单块

<h2>Enter Account Number:</h2>
<form method="POST" action="">
    <input name="accNo" type="text"/>
    <input name="submit" type="submit" value="submit" />
</form>

【问题讨论】:

  • 在脚本顶部添加 var_dump($_POST); 以查看发布到页面的内容。此外,如果您不打算在表单上设置 action 属性,最好将其省略。

标签: php forms pdo modx


【解决方案1】:

试试看有没有帖子提交

if($_SERVER['REQUEST_METHOD'] == "POST")  

和/或给您的表单一个隐藏的提交字段,如果您在提交按钮不在焦点时点击返回,某些浏览器 [至少有些曾经] 不会发布提交字段。对此也进行测试。

【讨论】:

  • 我遇到了一些非常奇怪的行为,当我提交表单时没有返回任何值,所以我去更改 sn-p,重新加载页面(不提交表单)和突然之间,值被传递了。就像 CMS 在传递值之前正在等待。
  • sn-p 缓存了吗?如果不是[[!snippet]],则将其设置为未缓存
  • 是的!现在可以工作了,非常感谢你们两个:D 不敢相信我忘了调用 sn-p uncached :D
【解决方案2】:

您是否尝试使用http://rtfm.modx.com/display/ADDON/Rowboat 处理您的表格?

【讨论】:

  • 暂时没有,我想做的事情基本上相当简单,似乎是会话变量处理导致了我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多