Moving Url and Doctype view helpers setup to module configuration. Also, adding vario...
authorMarco Pivetta <ocramius@gmail.com>
Fri, 2 Mar 2012 22:31:16 +0000 (23:31 +0100)
committerMarco Pivetta <ocramius@gmail.com>
Fri, 2 Mar 2012 22:31:16 +0000 (23:31 +0100)
module/Application/Module.php
module/Application/config/module.config.php

index 4d0c318..d85f6cf 100644 (file)
@@ -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);
     }
 }
index fd748ee..41f63b9 100644 (file)
@@ -1,8 +1,15 @@
 <?php
 return array(
     'di' => 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',
                 ),
             ),
         ),