2010-12-29 3 views
0

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

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

Любые идеи?

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

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

Ваше мнение помощник должен расширяет класс 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

Ударьте меня на это. ;-) –

0

Попросите 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; 
    } 

Initialise форму в своем действии контроллера и установите ссылку на форму

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

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

// view helper code 
$this->view->form; 
+0

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

0
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;

Смежные вопросы