Zend Framework View Helper - как заставить его работать

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

Последняя запись в трассировке стека:

0 D: \ work \ quickstart_zend \ application \ views \ scripts \ users \ register.phtml (38): Zend_Form_Element - ›__ call ('formDate', Array)

У меня следующая файловая структура:


    quickstart_zend
     + application
        + configs
        + controllers
        [...]
        + views
          + helpers
          + scripts
    
     [...]
     + library
        + Application
          + Form
            + Element
                Date.php
          + View
            + Helper
                FormDate.php
     + public

Я добавил в свой public / Bootstrap.php этот метод:

    

    protected function _initActionHelpers()
        {
            Zend_Controller_Action_HelperBroker::addPath(APPLICATION_PATH.'/../library/Application/View/Helper', 'Application_View_Helper');
            Zend_Controller_Action_HelperBroker::addPrefix('Application_View_Helper');
        }

Я также добавил в свой application.ini:


    autoloaderNamespaces[] = "Application"
    resources.view.helperPath.Application_View_Helper = APPLICATION_PATH "/../library/Application/View/Helper/"

И я видел версию, а также пробовал с resources.view.helperPath.Application_View_Helper_, похоже, ничего не помогает.

Конечно, у меня есть форма Users.php, в которой я создаю элемент date:


    // Add a dateOfBirth element
    $element = new Application_Form_Element_Date('dateOfBirth');
    $this->addElement($element);

Конечно, у меня есть форма Users.php, в которой я создаю элемент date:


    // Add a dateOfBirth element
    $element = new Application_Form_Element_Date('dateOfBirth');
    $this->addElement($element);

И, на мой взгляд, сценарий, в котором появляются ошибки:


    <? echo $form->dateOfBirth->formDate() ?>

Что мне не хватает, чтобы заставить его работать? :-( Я потратил день на поиск решений


person devplayer    schedule 28.03.2012    source источник
comment
Чтобы вызвать помощников представления, вы должны вызвать метод в представлении ($instanceOfZendView->formDate()), но вы вызываете его в Zend_Form_Element_Date. Так что не ходи так.   -  person bububaba    schedule 28.03.2012
comment
спасибо, теперь я понял, вот оно!   -  person devplayer    schedule 04.04.2012


Ответы (2)


чтобы правильно использовать помощник просмотра для этих данных, вы должны использовать его так:

На ваш взгляд (.phtml)

//a view helper should act on a piece of data and return something
//so I assume your formDate() helper takes a date value and reformats it.
<?php echo $this->formDate($this->form->dateOfBirth) ?>

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

$this->view->form = $form;
person RockyFord    schedule 29.03.2012
comment
да, вы близки, но на самом деле настоящая причина в том, что действие formDate должно вызываться в представлении, а не в formElement. Теперь я понимаю, что ближе всего к комментарию Бубубабы - person devplayer; 04.04.2012
comment
Это то, что я хотел сказать, я отредактировал, чтобы было понятнее. - person RockyFord; 05.04.2012

Вы получаете эту ошибку, потому что в Zend_Form_Element нет такого метода. Я думаю, вы пытаетесь использовать помощника представления, чтобы каким-то образом отобразить этот элемент формы, но в этом случае лучше использовать декораторы формы. Вы можете использовать стандартные декораторы или создать собственный. Дополнительную информацию см. В документации - http://framework.zend.com/manual/en/zend.form.decorators.html

person ventsislaf    schedule 28.03.2012
comment
да, я пытаюсь использовать помощники просмотра, и я делаю это в процессе изучения ZF. я прошел через урок декораторов, и я только что нашел образец на akrabat.com, который я хотел использовать в своих формах - person devplayer; 04.04.2012