Загадка контроллера 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