我是 Zf2 的新手,我最近从 zf1 升级,在这个问题上需要帮助和建议。这是事实:我正在某个控制器(页面)中从事医疗项目(这是对 zf1 版本的升级),我需要在侧边栏面板中显示患者的信息和当前就诊情况......我知道我在zf2 的新手,但我不想做多余的事情,比如在每个操作中getvisiteService()和patientService()检索信息并将这些结果传递给一遍又一遍地查看。我考虑过一个插件,但我必须再次从控制器传递到视图并使用部分和占位符助手(grr !!!)增强我的视图思考策略和事件监听器但我不知道这些是如何工作的,我需要将结果注入部分。那么有一种简单和/或复杂的方法可以实现这一目标吗?提前感谢您的任何提示和代码将不胜感激,并为我说法语的糟糕英语感到抱歉(这样一个典型的借口:))
问问题
584 次
1 回答
3
您可以在这里使用很多方法,但是坚持您最初的问题,将东西注入您的布局模型非常容易,如下所示:
模块.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');
}
如果您愿意,您还可以创建一个自定义视图助手来为您完成工作
<?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;
}
}
于 2013-03-20T11:06:46.983 回答