我尝试在 Zendframework 2 中调用模型表单布局中的方法来显示一些用户特定的东西。我曾尝试在 init 和 onBootstrap 的 Module.php 中执行此操作,并尝试声明一些将在 layout.phtml 中可用的变量,但我失败了并且没有发现任何有用的东西。
问问题
1715 次
1 回答
1
为此,您通常会使用视图助手作为模型的代理
在您的应用程序中创建一个视图助手,例如,
<?php
namespace Application\View\Helper;
use Zend\View\Helper\AbstractHelper;
class MyModelHelper extends AbstractHelper
{
protected $model;
public function __construct($model)
{
$this->model = $model;
}
public function myCoolModelMethod()
{
return $this->model->method();
}
}
然后,您可以通过使用方法和异常函数将其注册到Module.php
文件中的框架来使其可用,作为工厂来组成您的助手,并注入它所期望的模型getViewHelperConfig()
<?php
namespace Application;
class Module
{
public function getViewHelperConfig()
{
return array(
'factories' => array(
'myModelHelper' => function($sm) {
// either create a new instance of your model
$model = new \FQCN\To\Model();
// or, if your model is in the servicemanager, fetch it from there
//$model = $sm->getServiceLocator()->get('ModelService')
// create a new instance of your helper, injecting the model it uses
$helper = new \Application\View\Helper\MyModelHelper($model);
return $helper;
},
),
);
}
}
最后,在你的视图(任何视图)中,你可以调用你的助手,它又会调用你的模型方法
// view.phtml
<?php echo $this->myModelHelper()->myCoolModelMethod(); ?>
于 2013-04-18T12:24:09.667 回答