我是Zend Framework 2的新手
我想在每个页面(例如一个登录框)中添加一个表单,其功能与在其自己的模块中一样。所以它验证并且在动作之后不需要从模块重定向。
我已经查看了各种各样的事情,例如视图助手和动作助手,我没有发布任何代码,因为它可能只会增加混乱
我正在寻找如何实现这一目标的指南,因为我目前对如何最好地实现这一点感到困惑
答案 0 :(得分:1)
这肯定是视图助手的用例。这为不同模块的多个视图提供了一个可重用的逻辑。
以登录表格为例。您可能希望在调用帮助程序时返回Zend\Form\Form
实例。首先,创建帮助器:
namespace MyLogin\View\Helper;
use Zend\View\Helper\AbstractHelper;
use Zend\Form\Form;
class LoginForm extends AbstractHelper
{
public function __invoke()
{
$form = new Form;
$url = $this->getView()->url('user/login');
$form->setAttribute('action', $url);
$form->add([
'name' => 'username',
]);
$form->add([
'type' => 'password',
'name' => 'password',
]);
return $form;
}
}
然后在配置中以“loginForm”名称注册此视图助手:
'view_helpers' => [
'invokables' => [
'loginForm' => 'MyLogin\View\Helper\LoginForm',
],
],
现在您可以在视图中使用帮助程序:
<?php $form = $this->loginForm() ?>
<?= $this->form()->openTag($form)?>
<?= $this->formRow($form->get('username'))?>
<?= $this->formRow($form->get('password'))?>
<button type="submit" value="Login">
<?= $this->form()->closeTag()?>
当然,您可以在表单中应用任何登录信息,无论您需要重复使用的是什么: