gpt4 book ai didi

php - zf2 mvc 事件监听器或策略

转载 作者:搜寻专家 更新时间:2023-10-31 20:44:01 24 4
gpt4 key购买 nike

我是 Zf2 的新手,我最近从 zf1 升级了,需要有关此问题的帮助和建议。这是事实:我正在某些 Controller (页面)中从事医疗项目(这是对 zf1 版本的升级)我需要在侧边栏面板...我知道我是 zf2 的新手,但我不想做多余的事情,比如在每个操作中都让 getvisiteService()patientService() 检索信息并传递这些信息结果一遍又一遍地查看。我想到了一个插件,但我又一次必须从 Controller 传递到 View ,并用部分和占位符帮助器来增强我的 View (grr !!!)正在考虑Strategyeventlistener 但我不知道它们是如何工作的,我需要将结果注入(inject)部分。那么有一种简单和/或复杂的方法可以实现这一目标吗?提前谢谢你任何提示和代码将不胜感激,对不起我英语不好我说法语(这样一个典型的借口:))

最佳答案

您可以在此处使用大量方法,但坚持您最初的问题,将内容注入(inject)您的布局模型非常容易,就像这样:

模块.php

/**
* On bootstrap event
*
* @param \Zend\Mvc\MvcEvent $e
*/
public function onBootstrap(MvcEvent $e)
{
// Inject something, like a nav into your Layout view model
$viewModel = $e->getViewModel(); // Layout View Model
$navigation= new ViewModel(array(
'username' => 'Bob' // Dynamically set some variables..
));
$navigation->setTemplate('navigation/mynav');
$viewModel->addChild($navigation, 'navigation');
}

如果需要,您还可以创建一个自定义 View 助手来为您完成工作

<?php
/**
* MyHelper.php
*/
namespace Application\View\Helper;

use Zend\View\Helper\AbstractHelper;
use Zend\ServiceManager\ServiceManagerAwareInterface;
use Zend\ServiceManager\ServiceManager;

class MyHelper extends AbstractHelper implements ServiceManagerAwareInterface
{
/**
* Invoke
*
* @return string
*/
public function __invoke()
{
// Dynamically build your nav or what ever.

$patientService = $this->getServiceManager()->get('PatientService');

return 'soemthing';
}

/**
* @var ServiceManager
*/
protected $serviceManager;

/**
* Retrieve service manager instance
*
* @return ServiceManager
*/
public function getServiceManager()
{
return $this->serviceManager;
}

/**
* Set service manager instance
*
* @param ServiceManager $locator
* @return User
*/
public function setServiceManager(ServiceManager $serviceManager)
{
$this->serviceManager = $serviceManager;
return $this;
}
}

关于php - zf2 mvc 事件监听器或策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15511786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com