예제 #1
0
 /**
  * Renders a template fragment within a variable scope distinct from the
  * calling View object.
  *
  * If no arguments are passed, returns the helper instance.
  *
  * If the $model is an array, it is passed to the view object's assign()
  * method.
  *
  * If the $model is an object, it first checks to see if the object
  * implements a 'toArray' method; if so, it passes the result of that
  * method to to the view object's assign() method. Otherwise, the result of
  * get_object_vars() is passed.
  *
  * @param  string $name Name of view script
  * @param  array $model Variables to populate in the view
  * @return string|Partial
  * @throws Exception\RuntimeException
  */
 public function __invoke($moduleName = null, $name = null, $model = null)
 {
     if (0 == func_num_args()) {
         return $this;
     }
     $view = $this->cloneView();
     if (isset($this->partialCounter)) {
         $view->partialCounter = $this->partialCounter;
     }
     $module = $this->serviceLocator->getServiceLocator()->get('modulemanager')->getModule($moduleName);
     if (!$module) {
         return '';
     }
     $object = new \ReflectionObject($module);
     $modulePath = dirname($object->getFileName());
     if (!$modulePath) {
         return '';
     }
     $modulePath .= DIRECTORY_SEPARATOR . 'view';
     $resolver = new \Zend\View\Resolver\TemplatePathStack();
     $resolver->addPaths(array($modulePath));
     $view->setResolver($resolver);
     if (!empty($model)) {
         if (is_array($model)) {
             $view->vars()->assign($model);
         } elseif (is_object($model)) {
             if (null !== ($objectKey = $this->getObjectKey())) {
                 $view->vars()->offsetSet($objectKey, $model);
             } elseif (method_exists($model, 'toArray')) {
                 $view->vars()->assign($model->toArray());
             } else {
                 $view->vars()->assign(get_object_vars($model));
             }
         }
     }
     return $view->render($name);
 }
<?php

return array('service_manager' => array('factories' => array('MailHtmlGenerator' => function ($sm) {
    $config = $sm->get('Config');
    $mail = new \EmailHtmlGenerator\Service\MailHtmlGenerator();
    $transport = new \Zend\Mail\Transport\Sendmail();
    $mail->setTransport($transport);
    $viewRenderer = new \Zend\View\Renderer\PhpRenderer();
    $resolver = new \Zend\View\Resolver\AggregateResolver();
    $viewRenderer->setResolver($resolver);
    $viewsMap = new \Zend\View\Resolver\TemplatePathStack();
    $viewsMap->addPaths($config['view_manager']['template_path_stack']);
    $resolver->attach($viewsMap);
    $mail->setViewRenderer($viewRenderer);
    return $mail;
})));
예제 #3
0
 /**
  * Set the Layout based on themes-scheme
  */
 public function setLayout(MvcEvent $e)
 {
     $app = $e->getParam('application');
     $sm = $app->getServiceManager();
     $config = $sm->get('dxapp_module_options');
     $mobileDetect = $sm->get('dxMobileDetect');
     $viewModel = $e->getViewModel();
     $template = 'layout/layout';
     //$viewModel->getTemplate();
     $frontendThemex = $config->getFrontendTheme();
     $templateMaps = $config->getTemplateMaps();
     $frontendThemes = $config->getFrontendThemes();
     //array('dxdefault');
     $viewResolver = $sm->get('ViewResolver');
     $viewThemeResolver = new \Zend\View\Resolver\AggregateResolver();
     $templateMapResolver = new \Zend\View\Resolver\TemplateMapResolver();
     $pathResolver = new \Zend\View\Resolver\TemplatePathStack();
     $asseticConfiguration = array();
     if (!in_array($frontendThemex, $frontendThemes)) {
         $frontendThemes[] = $frontendThemex;
     }
     foreach ($frontendThemes as $frontendTheme) {
         if (isset($templateMaps['front'][$frontendTheme]['view_manager']['template_map'])) {
             $templateMapResolver->add($templateMaps['front'][$frontendTheme]['view_manager']['template_map']);
         }
         if (isset($templateMaps['front'][$frontendTheme]['view_manager']['template_path_stack'])) {
             $pathResolver->addPaths($templateMaps['front'][$frontendTheme]['view_manager']['template_path_stack']);
             $defaultPathStack = $sm->get('ViewTemplatePathStack');
             $pathResolver->setDefaultSuffix($defaultPathStack->getDefaultSuffix());
             $viewThemeResolver->attach($pathResolver);
         }
         if (isset($templateMaps['front'][$frontendTheme]['assetic_configuration'])) {
             $asseticConfiguration = \Dxapp\Utility\ArrayManager::merge($asseticConfiguration, $templateMaps['front'][$frontendTheme]['assetic_configuration']);
         }
     }
     $viewThemeResolver->attach($templateMapResolver);
     $viewResolver->attach($viewThemeResolver, 100);
     if (!empty($asseticConfiguration)) {
         $as = $sm->get('dxThemeAssets');
         $response = $e->getResponse();
         if (!$response) {
             $response = new Response();
             $e->setResponse($response);
         }
         $router = $e->getRouteMatch();
         $as->setThemeAssets($asseticConfiguration);
         if ($router) {
             $as->setRouteName($router->getMatchedRouteName());
             $as->setControllerName($router->getParam('controller'));
             $as->setActionName($router->getParam('action'));
         }
         $as->renderThemeAssets();
         $as->initLoadedModules($this->getLoadedModules());
         $as->setupRenderer($sm->get('ViewRenderer'));
     }
     $section = $config->getApplicationSection();
     if ($section == 'admin') {
         if (FALSE === strpos($template, 'admin-')) {
             $template = str_replace('/', '/admin-', $template);
         }
     }
     $viewModel->setTemplate($template);
 }