Невозможно отобразить элементы формы Zend в ViewScript - PullRequest
0 голосов
/ 15 января 2011

У меня есть форма Login.php, как это:

class Form_Login extends Zend_Form {

    public function init() {
    }

    public function __construct(){

        // Set method
        $this->setMethod('post');

        $elements = array();

        $element = $this->createElement('text','username');
        $element->setRequired(true);
        $elements[] = $element;

        $element = $this->createElement('password','password');
        $element->setRequired(true);
        $elements[] = $element;

        $this->addElements( $elements );

        $this->setDecorators( array( array( 'viewScript', array( 'viewScript' => '/authentication/login-form.phtml' ) ) ) );
    }
}

/ аутентификация / login-form.phtml

<table>
    <tr>
        <td><?= $this->getElement('username') ?></td>
    </tr>
    <tr>
        <td><?= $this->getElement('password') ?></td>
    </tr>

</table>

Когда я отрисовываю форму, я получаю следующее исключение:

Message: Plugin by name 'GetElement' was not found in the registry; used paths: Zend_View_Helper_: Zend/View/Helper/;C:/wamp/www/databox/application/views\helpers/ 

Где я иду не так. Должен ли я вводить какую-либо информацию в application.ini или Bootstrap.

Спасибо

Ответы [ 2 ]

3 голосов
/ 15 января 2011

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

public function someAction()
{
    $this->view->form = new Form_Login();
}

в вашем скрипте вида вы можете получить элементы через

<table>
<tr>
    <td><?= $this->form->getElement('username'); ?></td>
</tr>
<tr>
    <td><?= $this->form->getElement('password'); ?></td>
</tr>
</table>
1 голос
/ 28 апреля 2011
$this->setDecorators( array( array( 'viewScript', array( 'viewScript' =>'/authentication/login-form.phtml','form'=>$form ) ) ) );

и затем в поле зрения

$this->form->getElement('elementName');
...