Parcourir la source

Extend view renderer controller fix (#440)

Frank Brückner il y a 10 ans
Parent
commit
39180797c9

+ 11 - 5
library/Zend/Controller/Action/Helper/ViewRenderer.php

@@ -841,14 +841,20 @@ class Zend_Controller_Action_Helper_ViewRenderer extends Zend_Controller_Action_
         $inflector  = $this->getInflector();
         $request    = $this->getRequest();
         $dispatcher = $this->getFrontController()->getDispatcher();
-        $module     = $dispatcher->formatModuleName($request->getModuleName());
-        $controller = $dispatcher->formatControllerName(
-            $request->getControllerName()
-        );
+
+        // Format module name
+        $module = $dispatcher->formatModuleName($request->getModuleName());
+
+        // Format controller name
+        $filter     = new Zend_Filter_Word_CamelCaseToDash();
+        $controller = $filter->filter($request->getControllerName());
+        $controller = $dispatcher->formatControllerName($controller);
         if ('Controller' == substr($controller, -10)) {
             $controller = substr($controller, 0, -10);
         }
-        $action     = $dispatcher->formatActionName($request->getActionName());
+
+        // Format action name
+        $action = $dispatcher->formatActionName($request->getActionName());
 
         $params     = compact('module', 'controller', 'action');
         foreach ($vars as $key => $value) {

+ 19 - 0
tests/Zend/Controller/Action/Helper/ViewRendererTest.php

@@ -938,6 +938,25 @@ class Zend_Controller_Action_Helper_ViewRendererTest extends PHPUnit_Framework_T
         );
     }
 
+    /**
+     * @group GH-440
+     */
+    public function testControllerNameFormattingShouldRespectWordCamelCaseToDash()
+    {
+       $this->request->setControllerName('MetadataValidation')
+                     ->setActionName('index');
+
+       $this->helper->setActionController(
+           new Bar_IndexController(
+               $this->request, $this->response, array()
+           )
+       );
+
+       $this->assertEquals(
+           'metadata-validation/index.phtml', $this->helper->getViewScript()
+       );
+    }
+
     protected function _normalizePath($path)
     {
         return str_replace(array('/', '\\'), '/', $path);