Skip to content
This repository has been archived by the owner on Jan 8, 2020. It is now read-only.

Commit

Permalink
Merge branch 'feature/view-resolver-services' of https://github.com/E…
Browse files Browse the repository at this point in the history
…vanDotPro/zf2 into feature/mvc-view-resolver-factories

Conflicts:
	library/Zend/Mvc/Service/ModuleManagerFactory.php
  • Loading branch information
weierophinney committed Jul 23, 2012
2 parents 400808e + 4231b66 commit 5f848a0
Show file tree
Hide file tree
Showing 5 changed files with 143 additions and 34 deletions.
19 changes: 13 additions & 6 deletions library/Zend/Mvc/Service/ModuleManagerFactory.php
Expand Up @@ -50,14 +50,21 @@ class ModuleManagerFactory implements FactoryInterface
'ViewFeedStrategy' => 'Zend\Mvc\Service\ViewFeedStrategyFactory',
'ViewJsonRenderer' => 'Zend\Mvc\Service\ViewJsonRendererFactory',
'ViewJsonStrategy' => 'Zend\Mvc\Service\ViewJsonStrategyFactory',
'ViewResolver' => 'Zend\Mvc\Service\ViewResolverFactory',
'ViewTemplateMapResolver' => 'Zend\Mvc\Service\ViewTemplateMapResolverFactory',
'ViewTemplatePathStack' => 'Zend\Mvc\Service\ViewTemplatePathStackFactory',
),
'aliases' => array(
'Configuration' => 'Config',
'ControllerPluginBroker' => 'ControllerPluginManager',
'Di' => 'DependencyInjector',
'Zend\Di\LocatorInterface' => 'DependencyInjector',
'Zend\Mvc\Controller\PluginBroker' => 'ControllerPluginBroker',
'Zend\Mvc\Controller\PluginManager' => 'ControllerPluginManager',
'Configuration' => 'Config',
'ControllerPluginBroker' => 'ControllerPluginManager',
'Di' => 'DependencyInjector',
'Zend\Di\LocatorInterface' => 'DependencyInjector',
'Zend\Mvc\Controller\PluginBroker' => 'ControllerPluginBroker',
'Zend\Mvc\Controller\PluginManager' => 'ControllerPluginManager',
'Zend\View\Resolver\TemplateMapResolver' => 'ViewTemplateMapResolver',
'Zend\View\Resolver\TemplatePathStack' => 'ViewTemplatePathStack',
'Zend\View\Resolver\AggregateResolver' => 'ViewResolver',
'Zend\View\Resolver\ResolverInterface' => 'ViewResolver',
),
);

Expand Down
40 changes: 40 additions & 0 deletions library/Zend/Mvc/Service/ViewResolverFactory.php
@@ -0,0 +1,40 @@
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @package Zend_Mvc
*/

namespace Zend\Mvc\Service;

use Zend\View\Resolver as ViewResolver;
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;

/**
* @category Zend
* @package Zend_Mvc
* @subpackage Service
*/
class ViewResolverFactory implements FactoryInterface
{
/**
* Create the aggregate view resolver
*
* Creates a Zend\View\Resolver\AggregateResolver and attaches the template
* map resolver and path stack resolver
*
* @param ServiceLocatorInterface $serviceLocator
* @return ViewResolverAggregateResolver
*/
public function createService(ServiceLocatorInterface $serviceLocator)
{
$resolver = new ViewResolver\AggregateResolver();
$resolver->attach($serviceLocator->get('ViewTemplateMapResolver'));
$resolver->attach($serviceLocator->get('ViewTemplatePathStack'));
return $resolver;
}
}
43 changes: 43 additions & 0 deletions library/Zend/Mvc/Service/ViewTemplateMapResolverFactory.php
@@ -0,0 +1,43 @@
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @package Zend_Mvc
*/

namespace Zend\Mvc\Service;

use Zend\View\Resolver as ViewResolver;
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;

/**
* @category Zend
* @package Zend_Mvc
* @subpackage Service
*/
class ViewTemplateMapResolverFactory implements FactoryInterface
{
/**
* Create the template map view resolver
*
* Creates a Zend\View\Resolver\AggregateResolver and populates it with the
* ['view_manager']['template_map']
*
* @param ServiceLocatorInterface $serviceLocator
* @return ViewResolver\TemplateMapResolver
*/
public function createService(ServiceLocatorInterface $serviceLocator)
{
$config = $serviceLocator->get('Config');
$config = $config['view_manager'];
$map = array();
if (isset($config['template_map'])) {
$map = $config['template_map'];
}
return new ViewResolver\TemplateMapResolver($map);
}
}
45 changes: 45 additions & 0 deletions library/Zend/Mvc/Service/ViewTemplatePathStackFactory.php
@@ -0,0 +1,45 @@
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @package Zend_Mvc
*/

namespace Zend\Mvc\Service;

use Zend\View\Resolver as ViewResolver;
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;

/**
* @category Zend
* @package Zend_Mvc
* @subpackage Service
*/
class ViewTemplatePathStackFactory implements FactoryInterface
{
/**
* Create the template map view resolver
*
* Creates a Zend\View\Resolver\TemplatePathStack and populates it with the
* ['view_manager']['template_path_stack']
*
* @param ServiceLocatorInterface $serviceLocator
* @return ViewResolver\TemplatePathStack
*/
public function createService(ServiceLocatorInterface $serviceLocator)
{
$config = $serviceLocator->get('Config');
$config = $config['view_manager'];
$stack = array();
if (isset($config['template_path_stack'])) {
$stack = $config['template_path_stack'];
}
$templatePathStack = new ViewResolver\TemplatePathStack();
$templatePathStack->addPaths($stack);
return $templatePathStack;
}
}
30 changes: 2 additions & 28 deletions library/Zend/Mvc/View/ViewManager.php
Expand Up @@ -175,36 +175,10 @@ public function getHelperManager()
*/
public function getResolver()
{
if ($this->resolver) {
return $this->resolver;
if (null === $this->resolver) {
$this->resolver = $this->services->get('ViewResolver');
}

$map = array();
if (isset($this->config['template_map'])) {
$map = $this->config['template_map'];
}
$templateMapResolver = new ViewResolver\TemplateMapResolver($map);

$stack = array();
if (isset($this->config['template_path_stack'])) {
$stack = $this->config['template_path_stack'];
}
$templatePathStack = new ViewResolver\TemplatePathStack();
$templatePathStack->addPaths($stack);

$this->resolver = new ViewResolver\AggregateResolver();
$this->resolver->attach($templateMapResolver);
$this->resolver->attach($templatePathStack);

$this->services->setService('ViewTemplateMapResolver', $templateMapResolver);
$this->services->setService('ViewTemplatePathStack', $templatePathStack);
$this->services->setService('ViewResolver', $this->resolver);

$this->services->setAlias('Zend\View\Resolver\TemplateMapResolver', 'ViewTemplateMapResolver');
$this->services->setAlias('Zend\View\Resolver\TemplatePathStack', 'ViewTemplatePathStack');
$this->services->setAlias('Zend\View\Resolver\AggregateResolver', 'ViewResolver');
$this->services->setAlias('Zend\View\Resolver\ResolverInterface', 'ViewResolver');

return $this->resolver;
}

Expand Down

0 comments on commit 5f848a0

Please sign in to comment.