Merge remote-tracking branch 'weierophinney/feature/view-layer'
authorEvan Coury <me@evancoury.com>
Wed, 22 Feb 2012 19:45:03 +0000 (12:45 -0700)
committerEvan Coury <me@evancoury.com>
Wed, 22 Feb 2012 19:45:03 +0000 (12:45 -0700)
.gitmodules
module/Application/Module.php
module/Application/autoload_classmap.php
module/Application/config/module.config.php
module/Application/src/Application/Controller/ErrorController.php
module/Application/src/Application/Controller/IndexController.php
module/Application/src/Application/View/Listener.php [deleted file]
vendor/ZendFramework

index 8f630ff..a974f87 100644 (file)
@@ -1,3 +1,3 @@
 [submodule "vendor/ZendFramework"]
        path = vendor/ZendFramework
-       url = git://github.com/zendframework/zf2.git
+       url = git://github.com/weierophinney/zf2.git
index 2b220cd..75282d9 100644 (file)
@@ -39,45 +39,11 @@ class Module implements AutoloaderProvider
     public function initializeView($e)
     {
         $app          = $e->getParam('application');
+        $basePath     = $app->getRequest()->getBasePath();
         $locator      = $app->getLocator();
-        $config       = $e->getParam('config');
-        $view         = $this->getView($app);
-        $viewListener = $this->getViewListener($view, $config);
-        $app->events()->attachAggregate($viewListener);
-        $events       = StaticEventManager::getInstance();
-        $viewListener->registerStaticListeners($events, $locator);
-    }
-
-    protected function getViewListener($view, $config)
-    {
-        if ($this->viewListener instanceof View\Listener) {
-            return $this->viewListener;
-        }
-
-        $viewListener       = new View\Listener($view, $config->layout);
-        $viewListener->setDisplayExceptionsFlag($config->display_exceptions);
-
-        $this->viewListener = $viewListener;
-        return $viewListener;
-    }
-
-    protected function getView($app)
-    {
-        if ($this->view) {
-            return $this->view;
-        }
-
-        $locator = $app->getLocator();
-        $view    = $locator->get('view');
-
-        // Set up view helpers        
-        $view->plugin('url')->setRouter($app->getRouter());
-        $view->doctype()->setDoctype('HTML5');
-
-        $basePath = $app->getRequest()->getBasePath();
-        $view->plugin('basePath')->setBasePath($basePath);
-
-        $this->view = $view;
-        return $view;
+        $renderer     = $locator->get('Zend\View\Renderer\PhpRenderer');
+        $renderer->plugin('url')->setRouter($app->getRouter());
+        $renderer->doctype()->setDoctype('HTML5');
+        $renderer->plugin('basePath')->setBasePath($basePath);
     }
 }
index a30d090..acf5238 100644 (file)
@@ -1,7 +1,6 @@
 <?php
 return array(
-    'Application\View\Listener'              => __DIR__ . '/src/Application/View/Listener.php',
     'Application\Controller\IndexController' => __DIR__ . '/src/Application/Controller/IndexController.php',
     'Application\Controller\ErrorController' => __DIR__ . '/src/Application/Controller/ErrorController.php',
     'Application\Module'                     => __DIR__ . '/Module.php',
-);
\ No newline at end of file
+);
index cab10d7..2ae21f0 100644 (file)
@@ -1,15 +1,17 @@
 <?php
 return array(
-    'layout'                => 'layout/layout.phtml',
-    'display_exceptions'    => true,
-    'di'                    => array(
-        'instance' => array(
-            'alias' => array(
-                'index' => 'Application\Controller\IndexController',
-                'error' => 'Application\Controller\ErrorController',
-                'view'  => 'Zend\View\PhpRenderer',
+    'di' => array(
+        'definition' => array(
+            'class' => array(
+                'Zend\Mvc\Router\RouteStack' => array(
+                    'instantiator' => array(
+                        'Zend\Mvc\Router\Http\TreeRouteStack',
+                        'factory'
+                    ),
+                ),
             ),
-            
+        ),
+        'instance' => array(
             // Inject the plugin broker for controller plugins into
             // the action controller for use by all controllers that
             // extend it.
@@ -24,17 +26,42 @@ return array(
                 ),
             ),
 
-            // Setup the PhpRenderer
-            'Zend\View\PhpRenderer' => array(
+            // Setup the View layer
+            'Zend\View\Resolver\AggregateResolver' => array(
+                'injections' => array(
+                    'Zend\View\Resolver\TemplatePathStack',
+                ),
+            ),
+            'Zend\View\Resolver\TemplatePathStack' => array(
                 'parameters' => array(
-                    'resolver' => 'Zend\View\TemplatePathStack',
-                    'options'  => array(
-                        'script_paths' => array(
-                            'application' => __DIR__ . '/../view',
-                        ),
+                    'paths'  => array(
+                        'application' => __DIR__ . '/../view',
                     ),
                 ),
             ),
+            'Zend\View\Renderer\PhpRenderer' => array(
+                'parameters' => array(
+                    'resolver' => 'Zend\View\Resolver\AggregateResolver',
+                ),
+            ),
+            'Zend\Mvc\View\DefaultRenderingStrategy' => array(
+                'parameters' => array(
+                    'baseTemplate' => 'layout/layout',
+                ),
+            ),
+            'Zend\Mvc\View\ExceptionStrategy' => array(
+                'parameters' => array(
+                    'displayExceptions' => true,
+                    'template'          => 'error/index',
+                ),
+            ),
+            'Zend\Mvc\View\RouteNotFoundStrategy' => array(
+                'parameters' => array(
+                    'notFoundTemplate' => 'error/404',
+                ),
+            ),
+
+            // Setup the router and routes
             'Zend\Mvc\Router\RouteStack' => array(
                 'parameters' => array(
                     'routes' => array(
@@ -47,7 +74,7 @@ return array(
                                     'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
                                 ),
                                 'defaults' => array(
-                                    'controller' => 'index',
+                                    'controller' => 'Application\Controller\IndexController',
                                     'action'     => 'index',
                                 ),
                             ),
@@ -57,7 +84,7 @@ return array(
                             'options' => array(
                                 'route'    => '/',
                                 'defaults' => array(
-                                    'controller' => 'index',
+                                    'controller' => 'Application\Controller\IndexController',
                                     'action'     => 'index',
                                 ),
                             ),
index 17f002e..d959f98 100644 (file)
@@ -2,7 +2,8 @@
 
 namespace Application\Controller;
 
-use Zend\Mvc\Controller\ActionController;
+use Zend\Mvc\Controller\ActionController,
+    Zend\View\Model\ViewModel;
 
 class ErrorController extends ActionController
 {
@@ -28,6 +29,6 @@ class ErrorController extends ActionController
                 break;
         }
         
-        return array('message' => $error['message']);
+        return new ViewModel(array('message' => $error['message']));
     }
 }
index 8c1f5e1..fa1103b 100644 (file)
@@ -2,12 +2,13 @@
 
 namespace Application\Controller;
 
-use Zend\Mvc\Controller\ActionController;
+use Zend\Mvc\Controller\ActionController,
+    Zend\View\Model\ViewModel;
 
 class IndexController extends ActionController
 {
     public function indexAction()
     {
-        return array();
+        return new ViewModel();
     }
 }
diff --git a/module/Application/src/Application/View/Listener.php b/module/Application/src/Application/View/Listener.php
deleted file mode 100644 (file)
index 100530e..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-<?php
-
-namespace Application\View;
-
-use ArrayAccess,
-    Zend\Di\Locator,
-    Zend\EventManager\EventCollection,
-    Zend\EventManager\ListenerAggregate,
-    Zend\EventManager\StaticEventCollection,
-    Zend\Http\PhpEnvironment\Response,
-    Zend\Mvc\Application,
-    Zend\Mvc\MvcEvent,
-    Zend\View\Renderer;
-
-class Listener implements ListenerAggregate
-{
-    protected $layout;
-    protected $listeners = array();
-    protected $staticListeners = array();
-    protected $view;
-    protected $displayExceptions = false;
-
-    public function __construct(Renderer $renderer, $layout = 'layout.phtml')
-    {
-        $this->view   = $renderer;
-        $this->layout = $layout;
-    }
-
-    public function setDisplayExceptionsFlag($flag)
-    {
-        $this->displayExceptions = (bool) $flag;
-        return $this;
-    }
-
-    public function displayExceptions()
-    {
-        return $this->displayExceptions;
-    }
-
-    public function attach(EventCollection $events)
-    {
-        $this->listeners[] = $events->attach('dispatch.error', array($this, 'renderError'));
-        $this->listeners[] = $events->attach('dispatch', array($this, 'render404'), -1000);
-        $this->listeners[] = $events->attach('dispatch', array($this, 'renderLayout'), -80);
-    }
-
-    public function detach(EventCollection $events)
-    {
-        foreach ($this->listeners as $key => $listener) {
-            $events->detach($listener);
-            unset($this->listeners[$key]);
-            unset($listener);
-        }
-    }
-
-    public function registerStaticListeners(StaticEventCollection $events, $locator)
-    {
-        $ident   = 'Zend\Mvc\Controller\ActionController';
-        $handler = $events->attach($ident, 'dispatch', array($this, 'renderView'), -50);
-        $this->staticListeners[] = array($ident, $handler);
-    }
-
-    public function detachStaticListeners(StaticEventCollection $events)
-    {
-        foreach ($this->staticListeners as $i => $info) {
-            list($id, $handler) = $info;
-            $events->detach($id, $handler);
-            unset($this->staticListeners[$i]);
-        }
-    }
-
-    public function renderView(MvcEvent $e)
-    {
-        $response = $e->getResponse();
-        if (!$response->isSuccess()) {
-            return;
-        }
-
-        $routeMatch = $e->getRouteMatch();
-        $controller = $routeMatch->getParam('controller', 'index');
-        $action     = $routeMatch->getParam('action', 'index');
-        $script     = $controller . '/' . $action . '.phtml';
-
-        $vars       = $e->getResult();
-        if (is_scalar($vars)) {
-            $vars = array('content' => $vars);
-        } elseif (is_object($vars) && !$vars instanceof ArrayAccess) {
-            $vars = (array) $vars;
-        }
-
-        $content    = $this->view->render($script, $vars);
-
-        $e->setParam('content', $content);
-        return $content;
-    }
-
-    public function renderLayout(MvcEvent $e)
-    {
-        $response = $e->getResponse();
-        if (!$response) {
-            $response = new Response();
-            $e->setResponse($response);
-        }
-        if ($response->isRedirect()) {
-            return $response;
-        }
-
-        $vars = $e->getResult();
-        if (is_scalar($vars)) {
-            $vars = array('content' => $vars);
-        } elseif (is_object($vars) && !$vars instanceof ArrayAccess) {
-            $vars = (array) $vars;
-        }
-
-        if (false !== ($contentParam = $e->getParam('content', false))) {
-            $vars['content'] = $contentParam;
-        }
-
-        $layout   = $this->view->render($this->layout, $vars);
-        $response->setContent($layout);
-        return $response;
-    }
-
-    public function render404(MvcEvent $e)
-    {
-        $vars = $e->getResult();
-        if ($vars instanceof Response) {
-            return;
-        }
-
-        $response = $e->getResponse();
-        if ($response->getStatusCode() != 404) {
-            // Only handle 404's
-            return;
-        }
-
-        $vars = array(
-            'message'            => 'Page not found.',
-            'exception'          => $e->getParam('exception'),
-            'display_exceptions' => $this->displayExceptions(),
-        );
-
-        $content = $this->view->render('error/404.phtml', $vars);
-
-        $e->setResult($content);
-
-        return $this->renderLayout($e);
-    }
-
-    public function renderError(MvcEvent $e)
-    {
-        $error    = $e->getError();
-        $response = $e->getResponse();
-        if (!$response) {
-            $response = new Response();
-            $e->setResponse($response);
-        }
-
-        switch ($error) {
-            case Application::ERROR_CONTROLLER_NOT_FOUND:
-            case Application::ERROR_CONTROLLER_INVALID:
-                $vars = array(
-                    'message'            => 'Page not found.',
-                    'exception'          => $e->getParam('exception'),
-                    'display_exceptions' => $this->displayExceptions(),
-                );
-                $response->setStatusCode(404);
-                break;
-
-            case Application::ERROR_EXCEPTION:
-            default:
-                $vars = array(
-                    'message'            => 'An error occurred during execution; please try again later.',
-                    'exception'          => $e->getParam('exception'),
-                    'display_exceptions' => $this->displayExceptions(),
-                );
-                $response->setStatusCode(500);
-                break;
-        }
-
-        $content = $this->view->render('error/index.phtml', $vars);
-
-        $e->setResult($content);
-
-        return $this->renderLayout($e);
-    }
-}
index b3d970e..ab750ae 160000 (submodule)
@@ -1 +1 @@
-Subproject commit b3d970ee426be814da0fe21e48eed2c6617ff11a
+Subproject commit ab750ae8afb061b1919186cce13159132bf250ca