本文整理汇总了PHP中Zend\ModuleManager\ModuleEvent::getViewModel方法的典型用法代码示例。如果您正苦于以下问题:PHP ModuleEvent::getViewModel方法的具体用法?PHP ModuleEvent::getViewModel怎么用?PHP ModuleEvent::getViewModel使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Zend\ModuleManager\ModuleEvent
的用法示例。
在下文中一共展示了ModuleEvent::getViewModel方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: __invoke
/**
* @param ModuleEvent $e
* @return void
*/
public function __invoke(ModuleEvent $e)
{
$module = $e->getModule();
if (!$module instanceof ThemeProviderInterface && !method_exists($module, 'initTheme')) {
return;
}
$moduleManager = $e->getTarget();
$events = $moduleManager->getEventManager();
$sharedEvents = $events->getSharedManager();
$module_directory = $module->getDir();
$sharedEvents->attach('Zend\\Mvc\\Application', MvcEvent::EVENT_BOOTSTRAP, function ($e) use($module_directory) {
$application = $e->getApplication();
$eventManager = $application->getEventManager();
$serviceManager = $application->getServiceManager();
$themeManager = $serviceManager->get('ThemeManager');
$theme = $themeManager->getTheme();
$theme_folder = $theme->getFolder();
$theme_path = $module_directory . '/themes/' . $theme_folder;
if (!is_dir($theme_path)) {
$theme = $themeManager->getDefaultTheme();
$theme_folder = $theme->getFolder();
if (!is_dir($theme_path)) {
throw new MissingDefaultThemeException();
}
}
$theme_path = $module_directory . '/themes/' . $theme->getFolder();
// Views
// Add the folder to the template resolver.
$templatePathResolver = $serviceManager->get('Zend\\View\\Resolver\\TemplatePathStack');
$templatePathResolver->addPath($theme_path);
// Layout
if (file_exists($theme_path . '/layout.phtml')) {
$templateMapResolver = $serviceManager->get('Zend\\View\\Resolver\\TemplateMapResolver');
$layout_name = $theme->getLayoutName();
if (!$templateMapResolver->has($layout_name)) {
$templateMapResolver->add($layout_name, $theme_path . '/layout.phtml');
}
}
});
$sharedEvents->attach($module->getNamespace(), MvcEvent::EVENT_DISPATCH, function ($e) use($module_directory) {
// Set the layout for this module if available
$serviceManager = $e->getApplication()->getServiceManager();
$themeManager = $serviceManager->get('ThemeManager');
$theme = $themeManager->getTheme();
$theme_folder = $theme->getFolder();
$theme_path = $module_directory . '/themes/' . $theme_folder;
if (!is_dir($theme_path)) {
$theme = $themeManager->getDefaultTheme();
$theme_folder = $theme->getFolder();
if (!is_dir($theme_path)) {
throw new MissingDefaultThemeException();
}
}
$layout_name = $theme->getLayoutName();
$templateMapResolver = $serviceManager->get('Zend\\View\\Resolver\\TemplateMapResolver');
if ($templateMapResolver->has($layout_name)) {
$viewModel = $e->getViewModel();
$viewModel->setTemplate($layout_name);
}
}, 100);
}