0

我尝试在 Zendframework 2 中调用模型表单布局中的方法来显示一些用户特定的东西。我曾尝试在 init 和 onBootstrap 的 Module.php 中执行此操作,并尝试声明一些将在 layout.phtml 中可用的变量,但我失败了并且没有发现任何有用的东西。

4

1 回答 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 回答