2012-04-17 4 views
-1

У меня есть домашняя страница, на которой я хочу зарегистрироваться, для этого я использую 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> 

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

+0

Почему вы используете помощник вида? Какова цель вашего помощника в представлении? – Liyali

+0

так как я не хочу, чтобы регистрационная форма на странице с именем register я хочу ее на главной странице моего приложения. – Rik89

ответ

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 

И ваша форма будет визуализирована.

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

Окончательно разрешено в chat.

+0

Причина, по которой я хочу, чтобы помощник вида был из-за того, что я не хочу его видеть на отдельной странице. Я исправил помощника и все еще ничего. – Rik89

+0

Я понимаю, что ваш помощник находится в приложении/views/helpers/Register.php – vascowhite

+0

В качестве проверки удалите оператор if из формы return this this -> view->; просто чтобы убедиться, что это не ваша проблема. – vascowhite