Загрузить Zend_Form из помощника вида в Zend? - PullRequest
1 голос
/ 29 декабря 2010

Можно ли загрузить Zend_Form из помощника вида?Я использую эту форму в методе действий при входе.Но я также хочу, чтобы эта форма была видна при навигации на каждой странице (поэтому без фактического вызова действия входа в систему) метод post формы будет отправлять методу действия входа в систему.

I'mдумаю, что это должно быть сделано с помощью помощника вида, но я не понимаю, как.

Есть идеи?

Я пытался с этим: мой помощник вида:

class Zend_View_Helper_LoginForm
{
    function getLoginForm(){
    $form = new Form_LoginForm();
    return $form;
    }
}

и я называю это из моего макета следующим образом: <?php echo $this->form(); ?>, но это не работает.(Хотя я могу вызывать ту же форму через метод действия!)

В этом случае это дает мне эту ошибку (что не имеет смысла, потому что мой помощник имеет длину всего 9 строк):

Warning: Missing argument 1 for Zend_View_Helper_Form::form() in C:\xampplite\htdocs\zendpr\library\Zend\View\Helper\Form.php on line 44

Ответы [ 3 ]

3 голосов
/ 29 декабря 2010

Ваш помощник вида должен расширять класс Zend_View_Helper_Abstract, а метод помощника вида должен иметь то же имя, что и класс:

class Zend_View_Helper_LoginForm extends Zend_View_Helper_Abstract
{
    function loginForm() {
        $form = new Form_LoginForm();
        return $form;
    }
}

и вы называете это так в вашем скрипте вида:

echo $this->loginForm();

Если вы позвоните:

echo $this->form();

Вы используете помощник вида Zend_View_Helper_Form

0 голосов
/ 31 января 2012
class Zend_View_Helper_LoginForm extents Zend_Form {

    function getLoginForm(){

        $form = new Form_LoginForm();       

        return $form;
    }
} 

ИЛИ

$this->view->form=$form;

Оба собираются вернуть форму.Форма просмотра более специфична для просмотра.

Добавьте это в свой файл просмотра phtml

echo $this->form();

Чтобы ответить на этот вопрос - Уберите скобку

Должно быть echo $this->form;

0 голосов
/ 29 декабря 2010

Пусть ваш View_Helper расширит Zend_View_Helper_Abstract и переопределит setView ()

class Zend_View_Helper_XX extends Zend_View_Helper_Abstract {

    public $view;

    public function setView(Zend_View_Interface $view)
    {
        $this->view = $view;
    }

Инициализируйте форму в вашем действии контроллера и установите ссылку на форму

// controller action code
$this->view->form = $form;

Затем в помощнике вида вы можете ссылаться на форму через представление

// view helper code
$this->view->form;
...