Загадка контроллера Zend / view newbie: $ _GET & $ _POST пусто - при получении из формы HTML в представлении - PullRequest
2 голосов
/ 05 декабря 2010

Zend новичок здесь ... И, чтобы сделать его лучше, моя миссия состоит в том, чтобы создать поверх уже существующего сайта Zend кого-то другого.

(Кстати: zf show version -> Zend Framework Версия: 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 ]

8 голосов
/ 07 декабря 2010

Ваша форма не в правильном формате. Так как это PHP, вы можете использовать такую ​​форму или даже сгенерировать ZEND_FORM (это отличный способ сделать это). Всегда полезно работать с ZEND_FORM. Вы все еще хотите использовать это и идти своим путем, вот фрагмент, который я модифицировал для вас.

Я изменяю код для вас. В вашем представлении должна быть эта форма;

<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 голос
/ 06 декабря 2010

Создать форму, используя Zend_Form.Когда у ZF уже есть способ создавать формы, вы должны его использовать.Ваш метод похож на хак и не рекомендуется делать что-либо.

Узнайте здесь, как создать Zend_Form

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

...