0

我正在使用 zend 框架,并尝试使用 zend 表单、MVC 和 OOP 输出一个简单的登录表单。

我的代码如下:控制器 IndexController.php

class IndexController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

    public function indexAction()
    {
        $this->view->loginForm = $this->getLoginForm(); 
    }

    public function getLoginForm()
    {
        $form = new Application_Form_Login;
        return $form;
    }
}

这是形式:Login.php

class Application_Form_Login extends Zend_Form
{

    public function init()
    {
        $form = new Zend_Form;

        $username = new Zend_Form_Element_Text('username');
        $username
            ->setLabel('Username')
            ->setRequired(true)
        ;

        $password = new Zend_Form_Element_Password('password');
        $password
            ->setLabel('Password')
            ->setRequired(true)
        ;

        $submit = new Zend_Form_Element_Submit('submit');
        $submit->setLabel('Login');

        $form->addElements(array($username, $password, $submit));

    }
}

和视图: index.phtml

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>

    </head>

    <body>

        <div id="header">
            <div id="logo">
                <img src="../application/images/logo.png" alt="logo">
            </div>
        </div>

        <div id="wrapper">
            <?php echo $this->loginForm; ?>
        </div>
    </body>
</html>

我是 Zend 框架、MVC 和 OOP 的新手,所以这是我对以下在线建议、教程等的最佳尝试。

4

2 回答 2

5

您无意中创建了一个没有元素的表单,这就是没有出现任何内容的原因。在表单对象的 init 方法中,您正在创建 的新实例Zend_Form$form然后您什么也不做,而不是将元素添加到当前实例。将您的课程更改为:

class Application_Form_Login extends Zend_Form
{
    public function init()
    {
        $username = new Zend_Form_Element_Text('username');
        $username
            ->setLabel('Username')
            ->setRequired(true)
        ;

        $password = new Zend_Form_Element_Password('password');
        $password
            ->setLabel('Password')
            ->setRequired(true)
        ;

        $submit = new Zend_Form_Element_Submit('submit');
        $submit->setLabel('Login');

        $this->addElements(array($username, $password, $submit));
    }
}

它应该可以工作。

于 2012-07-10T18:27:11.063 回答
1

尝试做这样的事情:

http://framework.zend.com/manual/en/zend.form.forms.html

于 2012-07-10T18:27:08.460 回答