3

ログインフォームを作成し、UserController->loginAction に追加します。

 public function loginAction() {
    $form = new Application_Form_Login();

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

私のフォームをlayouts/scripts/header.phtmlに追加する方法は、これを試してみましたがうまくいきません:

<?php echo $this->loginForm ?>

views/scripts/user/login.phtml でフォームをエコーすると、ログイン フォームが表示されます。

それは私のログインフォームです:

class Application_Form_Login extends Zend_Form {

public function init() {
    $this->setDecorators(array('FormElements', 'Form'))
            ->setAction("/user/login/");

    $username = new Zend_Form_Element_Text(array('name' => 'username', 'class' => 'input-text'));
    $username->setRequired(true)
            ->setDecorators(array('ViewHelper',));

    $this->addElements(array($username));
}

}
4

2 に答える 2

1

レイアウトはビュー オブジェクトとは別のものであるため、フォームをレイアウトに割り当てる必要があります。

コントローラーで:

public function loginAction()
{
    $form = new Application_Form_Login();

    // assign the form to the layout
    $this->_helper->layout()->loginForm = $form;
}

あなたのレイアウトで:

<?php if ($this->layout()->loginForm): ?>
    <?php echo $this->layout()->loginForm; ?>
<?php endif; ?>

代わりにこれを試してください:

// in controller:
$form = new Application_Form_Login();
$this->view->placeholder('loginForm')->set($form);

---------------

// in layout script:
$form = $this->placeholder('loginForm');
if ($form instanceof Zend_Form) {
    echo $form;
}
于 2012-08-09T22:53:18.857 に答える
1

レンダリング機能を探しています:

<?php
    echo $this->loginForm->render();
?>
于 2012-08-09T22:56:41.647 に答える