Визуализация формы с помощником вида

У меня есть домашняя страница, на которой я хочу регистрационную форму, для этого я использую Zend_View_Helper. Однако ничего не происходит.. Я не вижу форму, которую я пытаюсь получить на этой странице.

Вот вспомогательный 'Register.php':

<?php

class Zend_View_Helper_Register extends Zend_View_Helper_Abstract {

    public function register(){

    $request = Zend_Controller_Front::getInstance()->getRequest();
        $controller = $request->getControllerName();
        $action = $request->getActionName();
        if ($controller == 'register' && $action == 'index') {
            return '';
        }
    }    
}

Вот форма Register.php:

<?php

class Application_Form_Register extends Zend_Form
{


    public function init() {
        $this->setName('register');
        $id = new Zend_Form_Element_Hidden('id');
  $id->addFilter('Int');
    $first_name = new Zend_Form_Element_Text('first_name');
    $first_name->setLabel('Firstname')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('NotEmpty');
    $surname = new Zend_Form_Element_Text('surname');
    $surname->setLabel('Surname')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('NotEmpty');
    $email = new Zend_Form_Element_Text('email');
    $email->setLabel('Email')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('NotEmpty');
    $username = new Zend_Form_Element_Text('username');
    $username->setLabel('Username')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('NotEmpty');
    $password = new Zend_Form_Element_Text('password');
    $password->setLabel('Password')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('NotEmpty');
    $age = new Zend_Form_Element_Text('age');
    $age->setLabel('Age')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('NotEmpty');
    $gender = new Zend_Form_Element_Text('gender');
    $gender->setLabel('Gender')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('NotEmpty');
    $uni = new Zend_Form_Element_Text('pic_2');
    $uni->setLabel('Uni')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('NotEmpty');
    $submit = new Zend_Form_Element_Submit('submit');
    $submit->setAttrib('id', 'submitbutton');
    $this->addElements(array($id, $firstname, $surname, $email, $username, $password, $age, $gender, $uni, $submit));
}

}

Вот модель 'Users.php'

<?php

class Application_Model_DbTable_Users extends Zend_Db_Table_Abstract
{

    protected $_name = 'users';

    public function addUser($first_name, $surname, $email, $username, $password, $age, $gender, $uni) {
        $data = array(
        'first_name' => $first_name,
        'surname' => $surname,
        'email' => $email,
        'username' => $username,
        'password' => $password,
        'age' => $age,
        'gender' => $uni,
    );
    $this->insert($data);
}   
}

Контроллер 'RegisterController.php'

<?php

class RegisterController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

public function indexAction()
{
    $form = new Application_Form_Register();
    $form->submit->setLabel('Register');
    $this->view->form = $form;
    if ($this->getRequest()->isPost()) {
        $formData = $this->getRequest()->getPost();
        if ($form->isValid($formData)) {
            $first_name = $form->getValue('first_name');
            $surname = $form->getValue('surname');
            $email = $form->getValue('email');
            $username = $form->getValue('username');
            $password = $form->getValue('password');
            $age = $form->getValue('age');
            $gender = $form->getValue('gender');
            $uni = $form->getValue('uni');
            $register = new Application_Model_DbTable_Users();
            $register->addUser($first_name, $surname, $email, $username, $password, $age, $gender, $uni);
            $this->_helper->redirector('index');
        } else {
            $form->populate($formData);
        }

    }
}

}

И наконец мнение:

<div id="register">
    <h2>Register</h2>
    <?php echo $this->register(); ?>
</div>

Я знаю, что никогда не должен передавать пароли в виде простого текста, мой следующий вопрос - как с этим справиться.

1 ответ

Решение

Похоже, ваш помощник по просмотру не делает ничего полезного. Я предполагаю, что вы хотите, чтобы это сделало форму. Если так, то это должно выглядеть так:

class Zend_View_Helper_Register extends Zend_View_Helper_Abstract {

    public function register()
    {
        $request = Zend_Controller_Front::getInstance()->getRequest();
        $controller = $request->getControllerName();
        $action = $request->getActionName();
        if ($controller == 'register' && $action == 'index') {
            return $this->view->form;
        }
    }    
}

Сказав это, вам не нужен помощник для этого на самом деле. На ваш взгляд, просто поставьте:-

echo $this->form

И ваша форма окажет.

Вы бы использовали помощника вида, если бы вам нужна форма (скажем, форма выхода) на каждой странице вашего сайта.

Наконец решен в чате.

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