У меня небольшой опыт работы с Zend Framework, но мне нравится возиться с ним, пока он не заработает.
Но сейчас я не могу решить эту проблему.
У меня есть форма:
<?php
class Application_Form_Login extends Zend_Form
{
protected $notEmpty;
public function init()
{
// Create NotEmpty validator
$notEmpty = new Zend_Validate_NotEmpty();
// Configure validators for username element
$notEmpty->setMessage('Gelieve dit veld in te vullen');
$this->setMethod('post');
// emailAddress
$this->addElement('text', 'emailAddress', array(
'filters' => array('StringTrim', 'StringToLower'),
'required' => true,
'validators' => array(
array('validator' => $notEmpty),
),
'label' => 'Emailadres:'
));
// password
$this->addElement('password', 'password', array(
'filters' => array('StringTrim'),
'required' => true,
'validators' => array(
array('validator' => $notEmpty),
),
'label' => 'Wachtwoord:'
));
// submit
$this->addElement('submit', 'submit', array(
'ignore' => true,
'label' => 'Inloggen'
));
}
}
Вид:
<?= $this->form ?>
<?= $this->postdata ?>
И AccountController:
<?php
class AccountController extends Zend_Controller_Action
{
public function init()
{
echo 'data:'.$this->getRequest()->getPost('emailAddress');
/* Initialize action controller here */
}
public function indexAction()
{
$this->view->postdata = var_dump($this->getRequest()->getParams());
$form = new Application_Form_Login();
$request = $this->getRequest();
if ($request->isPost()){
// THIS POINT IS NEVER REACHED
if ($form->isValid($request->getPost())){
if ($this->_isValidLogin($form->getValues())){
// Succes Redirect to the home page
$this->_helper->redirector('index', 'home');
}
else // Not succes Redirect to account page
{
$this->_helper->redirector('index', 'account');
}
}
Как вы видите, я вставил комментарий: // ЭТА ТОЧКА НИКОГДА НЕ ДОСТИГЛА.
В этом контроллере больше функций, но они не относятся к моей проблеме.
Давай объясним это немного подробнее.
Очень странное поведение в том, что когда я помещаю данные в свои поля, $ this-> view-> postdata = var_dump ($ this-> getRequest () -> getParams () не возвращает данных POST.
Но когда я ставлю отметки в полях формы входа, я вижу данные POST. Конечно пусто.
Как это:
array
'controller' => string 'account' (length=7)
'action' => string 'index' (length=5)
'module' => string 'default' (length=7)
'emailAddress' => string '' (length=0)
'password' => string '' (length=0)
'submit' => string 'Inloggen' (length=8)
Таким образом, // ЭТА ТОЧКА НЕ ДОСТИГНУТА, фактически достигнута, когда данные не вводятся в поля формы входа в систему :-)
Вопрос в том, что я делаю не так? Я неправильно обращаюсь с Zend_Controller_Request_Http?
Если вам нужна дополнительная информация, я должен дать ее.