From 31401ee59c030a46693cfde20323abd4066f9928 Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Fri, 2 Mar 2012 23:31:16 +0100 Subject: [PATCH] Moving Url and Doctype view helpers setup to module configuration. Also, adding various comments on the configuration to make it more explicit as it importance increases --- module/Application/Module.php | 2 - module/Application/config/module.config.php | 113 ++++++++++++++++++--------- 2 files changed, 74 insertions(+), 41 deletions(-) diff --git a/module/Application/Module.php b/module/Application/Module.php index 4d0c318..d85f6cf 100644 --- a/module/Application/Module.php +++ b/module/Application/Module.php @@ -39,8 +39,6 @@ class Module implements AutoloaderProvider $basePath = $app->getRequest()->getBasePath(); $locator = $app->getLocator(); $renderer = $locator->get('Zend\View\Renderer\PhpRenderer'); - $renderer->plugin('url')->setRouter($app->getRouter()); - $renderer->doctype()->setDoctype('HTML5'); $renderer->plugin('basePath')->setBasePath($basePath); } } diff --git a/module/Application/config/module.config.php b/module/Application/config/module.config.php index fd748ee..41f63b9 100644 --- a/module/Application/config/module.config.php +++ b/module/Application/config/module.config.php @@ -1,8 +1,15 @@ array( + 'definition' => array( 'class' => array( + // Defining how the router should be instantiated. The minimum + // requirement is to implement interface + // Zend\Mvc\Router\RouteStack. Here we are stating that + // Zend\Mvc\Router\Http\TreeRouteStack::factory should generate + // an instance of it. This can be changed to instantiate a + // custom router 'Zend\Mvc\Router\RouteStack' => array( 'instantiator' => array( 'Zend\Mvc\Router\Http\TreeRouteStack', @@ -11,10 +18,14 @@ return array( ), ), ), + 'instance' => array( - // Inject the plugin broker for controller plugins into + + // Setup for controllers. + + // Injecting the plugin broker for controller plugins into // the action controller for use by all controllers that - // extend it. + // extend it 'Zend\Mvc\Controller\ActionController' => array( 'parameters' => array( 'broker' => 'Zend\Mvc\Controller\PluginBroker', @@ -26,13 +37,57 @@ return array( ), ), - // Setup the View layer + // Setup for router and routes + 'Zend\Mvc\Router\RouteStack' => array( + 'parameters' => array( + 'routes' => array( + 'default' => array( + 'type' => 'Zend\Mvc\Router\Http\Segment', + 'options' => array( + 'route' => '/[:controller[/:action]]', + 'constraints' => array( + 'controller' => '[a-zA-Z][a-zA-Z0-9_-]*', + 'action' => '[a-zA-Z][a-zA-Z0-9_-]*', + ), + 'defaults' => array( + 'controller' => 'Application\Controller\IndexController', + 'action' => 'index', + ), + ), + ), + 'home' => array( + 'type' => 'Zend\Mvc\Router\Http\Literal', + 'options' => array( + 'route' => '/', + 'defaults' => array( + 'controller' => 'Application\Controller\IndexController', + 'action' => 'index', + ), + ), + ), + ), + ), + ), + + // Setup for the view layer. + + // Using the PhpRenderer, which just handles html produced by php + // scripts + 'Zend\View\Renderer\PhpRenderer' => array( + 'parameters' => array( + 'resolver' => 'Zend\View\Resolver\AggregateResolver', + ), + ), + // Defining how the view scripts should be resolved by stacking up + // a Zend\View\Resolver\TemplateMapResolver and a + // Zend\View\Resolver\TemplatePathStack 'Zend\View\Resolver\AggregateResolver' => array( 'injections' => array( 'Zend\View\Resolver\TemplateMapResolver', 'Zend\View\Resolver\TemplatePathStack', ), ), + // Defining where the layout/layout view should be located 'Zend\View\Resolver\TemplateMapResolver' => array( 'parameters' => array( 'map' => array( @@ -40,6 +95,8 @@ return array( ), ), ), + // Defining where to look for views. This works with multiple paths, + // very similar to include_path 'Zend\View\Resolver\TemplatePathStack' => array( 'parameters' => array( 'paths' => array( @@ -47,22 +104,25 @@ return array( ), ), ), - 'Zend\View\Renderer\PhpRenderer' => array( + // View for the layout + 'Zend\Mvc\View\DefaultRenderingStrategy' => array( 'parameters' => array( - 'resolver' => 'Zend\View\Resolver\AggregateResolver', + 'layoutTemplate' => 'layout/layout', ), ), - 'Zend\Mvc\View\DefaultRenderingStrategy' => array( + // Injecting the router into the url helper + 'Zend\View\Helper\Url' => array( 'parameters' => array( - 'layoutTemplate' => 'layout/layout', + 'router' => 'Zend\Mvc\Router\RouteStack', ), ), - 'Zend\Mvc\View\ExceptionStrategy' => array( + // Configuration for the doctype helper + 'Zend\View\Helper\Doctype' => array( 'parameters' => array( - 'displayExceptions' => true, - 'exceptionTemplate' => 'error/index', + 'doctype' => 'HTML5', ), ), + // View script rendered in case of 404 exception 'Zend\Mvc\View\RouteNotFoundStrategy' => array( 'parameters' => array( 'displayNotFoundReason' => true, @@ -70,36 +130,11 @@ return array( 'notFoundTemplate' => 'error/404', ), ), - - // Setup the router and routes - 'Zend\Mvc\Router\RouteStack' => array( + // View script rendered in case of other exceptions + 'Zend\Mvc\View\ExceptionStrategy' => array( 'parameters' => array( - 'routes' => array( - 'default' => array( - 'type' => 'Zend\Mvc\Router\Http\Segment', - 'options' => array( - 'route' => '/[:controller[/:action]]', - 'constraints' => array( - 'controller' => '[a-zA-Z][a-zA-Z0-9_-]*', - 'action' => '[a-zA-Z][a-zA-Z0-9_-]*', - ), - 'defaults' => array( - 'controller' => 'Application\Controller\IndexController', - 'action' => 'index', - ), - ), - ), - 'home' => array( - 'type' => 'Zend\Mvc\Router\Http\Literal', - 'options' => array( - 'route' => '/', - 'defaults' => array( - 'controller' => 'Application\Controller\IndexController', - 'action' => 'index', - ), - ), - ), - ), + 'displayExceptions' => true, + 'exceptionTemplate' => 'error/index', ), ), ), -- 1.7.10.4