這當然是一個視圖助手的用例。這提供了一個邏輯在不同模塊的多個視圖中可重用的邏輯。
以例如登錄表單爲例。當您調用助手時,您可能想要返回Zend\Form\Form
實例。因此,首先創建幫助:
'view_helpers' => [
'invokables' => [
'loginForm' => 'MyLogin\View\Helper\LoginForm',
],
],
現在你可以使用助手在你的看法:
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;
}
}
然後你在你的配置寄存器的名義下「登錄表單」這一觀點幫手
<?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()?>
當然你也可以在你的應用形式的任何登錄,無論你需要能重複使用:
- 返回一個形式實例,以便您的視圖可以呈現形式
- 返回渲染視圖已經在助手讓你的看法並不需要渲染
- 將所有種類的選擇,形式
- 等
你看過部分助手嗎? http://framework.zend.com/manual/2.1/en/modules/zend.view.helpers.partial.html –
感謝您的回覆。是的,似乎部分幫手只處理模板,所以不是前進的方向。由於我對Zend的無知,我可能會完全錯誤地接近它。在我看來,我應該能夠擁有一個登錄模塊並在全球範圍內使用它,也許不是? – user1298511