Я хочу написать небольшую регистрационную форму. Это мой код формы:
class Application_Form_Register extends Zend_Form
{
public function init()
{
$this->setMethod('post');
$this->addElements(
[
$this->getNameFirst(),
$this->getNameLast(),
$this->getEmail(),
$this->getPassword(),
$this->getPasswordConfrim(),
$this->getSex(),
$this->getDateBirth(),
$this->getAddressStreet(),
$this->getAddressStreetHn(),
$this->getAddressStreetAn(),
$this->getCityCode(),
$this->getCityName(),
$this->getSubmitButton(),
]
);
}
}
Это моя регистрация в соответствующем контроллере:
public function registerAction()
{
$form = new Application_Form_Register();
$this->view->form = $form;
if ($this->getRequest()->isPost()) {
if ($form->isValid($this->getRequest()->getPost())) {
$values = $form->getValues();
var_dump($values);die();
}
}
}
Я не знаю, почему метод isPost() возвращает false. Какие-либо предложения?
Для хорошей практики - измените свою логику следующим образом:
создайте файл с именем form.phtml
и следующий примерный контент:
<h2>Please sign up:</h2>
<?php echo $this->form ?>
Измените свой RegisterController.php
таким образом:
class RegisterController extends Zend_Controller_Action
{
public function getForm()
{
// creating form
$form = new Application_Form_Register();
return $form;
}
public function indexAction()
{
// rendering form.phtml
$this->view->form = $this->getForm();
$this->render('form');
}
public function registerAction()
{
if (!$this->getRequest()->isPost()) {
return $this->_forward('index');
}
$form = $this->getForm();
if (!$form->isValid($_POST)) {
// if form values aren't valid, output form again
$this->form = $form;
return $this->render('form');
}
$values = $form->getValues();
//var_dump($values);die();
// authentication...
}
}
Сначала нужно вызвать действие index
чтобы показать регистрационную форму пользователю. Также убедитесь, что кнопка submit
в форме регистра указывает на register
действия. Надеюсь, вы добавили кнопку отправки таким образом: $form->addElement('submit', 'register', array('label' => 'Sign up'));
Проверить результаты
indexAction
и изменить назначение в параметрах кнопки отправки: $form->addElement('submit', 'index', array('label' => 'Sign up'));
indexAction
в том же контроллере