Zend控制器/查看新手拼图:$ _GET& $ _POST为空 - 从视图中的HTML表单收到

时间:2010-12-04 22:24:01

标签: zend-framework zend-view zend-controller

Zend新手在这里......为了让它更好,我的使命是建立在其他人已经存在的Zend网站之上。

(BTW:zf show version - > Zend Framework Version:1.11.1 - 我好像有Zend_Form)。

这是好奇的一点。所有表单都在视图中以HTML格式构建。他们似乎工作,虽然我无法弄清楚 - 特别是考虑到我所看到的。

我遵循惯例并为测试表单创建了一个视图并编写了表单:

<form action="<?php echo $this->url(array('controller'=>'ControllerName','action'=>'submit'));?>" method="post" style="margin-left:20px">
<p class="bold setmgr">Your email here:</p>
<div class="field">
   <input class="text"  type="text name="custEmail"/>
</div>
<div class="field">
   <input class="button" value="Submit and be free!" type="submit"/>
</div>
</form>

控制器中的submitAction成员正在正确触发。没问题。

但我查找POST数据的所有地方似乎都是空的!

        echo "obj  custEmail = [" . $this->_request->getPost('custEmail') . "]\n";
        echo "GET  custEmail = [" . $_GET['custEmail'] . "]\n";
        echo "POST custEmail = [" . $_POST['custEmail'] . "]\n";

        if ($this->_request->isPost()) {
           $data = $this->_request->getPost();
           Zend_Debug::dump($data);
        }

他们都没有产生任何东西。

我非常有必要找到解决问题的方法甚至是线索。

感谢阅读。

2 个答案:

答案 0 :(得分:8)

您的表单格式不正确。因为它是PHP,您可以使用这样的表格,或者您甚至可以生成ZEND_FORM(这是一种深刻的方式)。使用ZEND_FORM.If总是一个好习惯。你仍然希望使用这个和你的方式,这是我为你修改的片段。

我正在为您修改代码。您的视图应该包含此格式;

<form action="" method="post" style="margin-left:20px">
<p class="bold setmgr">Your email here:</p>
<div class="field">
   <input class="text"  type="text" name="custEmail"/>
</div>
<div class="field">
   <input class="button" value="Submit and be free!" type="submit" name="submit"/>
</div>
</form>

<?php
echo $this->custEmail;
?>

现在在ACTIOn上写下以下内容,即。 submitAction;

public function submitAction()
{
  if ($this->getRequest()->isPost())
  {
    $custEmail = $this->getRequest()->getPost('custEmail');
    echo $custEmail;
    $this->view->custEmail = $custEmail;
  }

}

现在检查它是否适合你。

答案 1 :(得分:1)

使用Zend_Form创建表单。当ZF已经有办法创建表单时,你应该使用它。你的方法就像一个黑客,不是推荐的做事方式。

点击此处了解如何创建Zend_Form

http://framework.zend.com/manual/en/zend.form.html