Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在视图中呈现表单元素?_Php_Zend Framework_Forms_Elements - Fatal编程技术网

Php 如何在视图中呈现表单元素?

Php 如何在视图中呈现表单元素?,php,zend-framework,forms,elements,Php,Zend Framework,Forms,Elements,我创建了这样一个表单: class Form_Login extends Zend_Form { public function __construct() { $this->setMethod('post'); $elements = array(); // username $element = $this->addElement('text', 'username', array('label' =&

我创建了这样一个表单:

class Form_Login extends Zend_Form {

    public function __construct() {

        $this->setMethod('post');
        $elements = array();

        // username
        $element = $this->addElement('text', 'username', array('label' => 'Username') );
        $elements[] = $element;

        // password
        $element = $this->addElement('password', 'password', array('label' => 'Password'));
        $elements[] = $element;

        // submit 
        $element = $this->addElement('submit', 'submit', array('label' => 'Login'));
        $elements[] = $element;

        $this->addElements( $elements );
        $this->addDecorator('ViewHelper');
        $this->setDecorators(array(array('ViewScript', array('viewScript' => 'authentication/login-form.phtml' ))));   
    }
}
<form action='submitlogin' method='post' id='loginform'>  

Login Form

<?=  $this->form->getElement('username');  ?>
<?=  $this->form->getElement('password');  ?>

</form>
<?= $this->element->username ?>
现在,在登录表单.phtml文件中,我呈现如下元素:

class Form_Login extends Zend_Form {

    public function __construct() {

        $this->setMethod('post');
        $elements = array();

        // username
        $element = $this->addElement('text', 'username', array('label' => 'Username') );
        $elements[] = $element;

        // password
        $element = $this->addElement('password', 'password', array('label' => 'Password'));
        $elements[] = $element;

        // submit 
        $element = $this->addElement('submit', 'submit', array('label' => 'Login'));
        $elements[] = $element;

        $this->addElements( $elements );
        $this->addDecorator('ViewHelper');
        $this->setDecorators(array(array('ViewScript', array('viewScript' => 'authentication/login-form.phtml' ))));   
    }
}
<form action='submitlogin' method='post' id='loginform'>  

Login Form

<?=  $this->form->getElement('username');  ?>
<?=  $this->form->getElement('password');  ?>

</form>
<?= $this->element->username ?>

如何在外部脚本中呈现元素…

您可以从视图脚本中调用元素,如下所示:

class Form_Login extends Zend_Form {

    public function __construct() {

        $this->setMethod('post');
        $elements = array();

        // username
        $element = $this->addElement('text', 'username', array('label' => 'Username') );
        $elements[] = $element;

        // password
        $element = $this->addElement('password', 'password', array('label' => 'Password'));
        $elements[] = $element;

        // submit 
        $element = $this->addElement('submit', 'submit', array('label' => 'Login'));
        $elements[] = $element;

        $this->addElements( $elements );
        $this->addDecorator('ViewHelper');
        $this->setDecorators(array(array('ViewScript', array('viewScript' => 'authentication/login-form.phtml' ))));   
    }
}
<form action='submitlogin' method='post' id='loginform'>  

Login Form

<?=  $this->form->getElement('username');  ?>
<?=  $this->form->getElement('password');  ?>

</form>
<?= $this->element->username ?>

对于特定的图元组件,可以使用以下内容:

<? $el = $this->element->username; ?>
<label><?= $el->getLabel() ?></label>
<?= $this->formText($el->getName(), $el->getValue(), $el->getAttribs()) ?>

以下是我的完整解决方案:

Login.php中的表单类

class Form_Login extends Zend_Form {

    /**
     * Constructor
     */
    public function __construct( $options = null ) {

        parent::__construct( $options );

        // Set the method for the display form to POST
        $this->setMethod('post');

        $elements = array();

        $element = $this->CreateElement('text', 'username');
        $element->setLabel('Username');
        $elements[] = $element;

        $element = $this->CreateElement('password', 'password');
        $element->setLabel('Password');
        $elements[] = $element;

        $element = $this->CreateElement('submit', 'submit');
        $element->setLabel('Login');
        $elements[] = $element;

        $this->addElements( $elements );

        $this->setElementDecorators( array( 'ViewHelper' ) );

        $this->setDecorators( array( array( 'ViewScript', array( 'viewScript' => 'authentication/login-form.phtml' ) ) ) );

    } // end construct


} // end class
登录表单.phtml

<form action=<?= $this->element->getAction() ?> method=<?= $this->element->getMethod() ?> >


<table>
    <tr>
        <td><label><?= $this->element->username->getLabel() ?></label></td>
        <td><?= $this->element->username; ?></td>
    </tr>   
    <tr>
        <td><label><?= $this->element->password->getLabel() ?></label></td>
        <td><?= $this->element->password; ?></td>
    </tr>
</table>

</form>
method=>

+1正常。它正在呈现标签和文本字段以及您的上述答案。如何分别渲染标签和文本字段。谢谢请注意,$this->element->username中的“element”指的是表单对象,而不是实际的元素$该->元素->用户名然后引用表单元素对象。只是一个小小的编码约定。过了一段时间,我找到了一个简短而完整的问题解决方案。请看我的回答。。谢谢