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

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 ответа

Ваша форма не в правильном формате. Поскольку это 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;
  }

}

Теперь проверьте, работает ли он у вас или нет.

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

Проверьте здесь о том, как создать Zend_Form

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

Другие вопросы по тегам