【问题标题】:Calling a method in model from layout in Zendframework 2从 Zendframework 2 中的布局调用模型中的方法
【发布时间】:2013-04-18 12:06:53
【问题描述】:

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

【问题讨论】:

    标签: model-view-controller zend-framework2


    【解决方案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();
        }
    }
    

    然后,您可以通过使用 getViewHelperConfig() 方法和作为工厂的异常函数将其注册到您的 Module.php 文件中的框架来使其可用,以组成您的帮助程序,并注入它所期望的模型

    <?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(); ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-15
      • 2014-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-01
      • 2015-03-01
      相关资源
      最近更新 更多