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

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

(Кстати: 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);
        }

Все они ничего не производят.

Я был бы очень признателен за решение или даже за подсказку о том, что идет не так.

Спасибо за прочтение.


person confused    schedule 04.12.2010    source источник
comment
Я не знаю, намеренно ли это, но в строке 4 вашего первого примера есть слово type = text без конечной точки с запятой ...   -  person VOIDHand    schedule 25.05.2011


Ответы (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;
  }

}

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

person Nishant Shrivastava    schedule 07.12.2010

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

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

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

person Sumit Ghosh    schedule 05.12.2010
comment
Очень хотелось бы, но еще не удалось выяснить, как заставить автозагрузчик / маршрутизацию Zend находить файлы определения формы. Помимо этого, я все еще хотел бы выяснить ответ на мой исходный вопрос - является ли это взломом - ПОЧЕМУ данные $ _POST пусты и / или как их получить. - person confused; 07.12.2010