/** * @group ZF-10725 */ public function testActionsWithLeadingCapitalLettersShouldNotInvokeTruncatedViewScripts() { $this->request->setModuleName('default')->setControllerName('Controller')->setActionName('Action'); $controller = new Bar_IndexController($this->request, $this->response, array()); $this->helper->setActionController($controller); $scriptName = $this->helper->getViewScript(); $this->assertEquals('controller/action.phtml', $scriptName); }
public function testGetViewScriptWithNoControllerSet() { $this->request->setModuleName('bar')->setControllerName('index')->setActionName('test'); $controller = new Bar_IndexController($this->request, $this->response, array()); $this->helper->setNoController(); $expected = 'test.phtml'; $this->assertEquals($expected, $this->helper->getViewScript()); }
/** * @group ZF-10725 * @dataProvider providerViewScriptNameDoesNotIncludeDisallowedCharacters */ public function testViewScriptNameDoesNotIncludeDisallowedCharacters($actionName) { $this->request->setModuleName('default')->setControllerName('foo')->setActionName($actionName); $controller = new Bar_IndexController($this->request, $this->response, array()); $this->helper->setActionController($controller); $scriptName = $this->helper->getViewScript(); $this->assertEquals('foo/my-bar.phtml', $scriptName); }
/** * @see ZF-2738 */ public function testStockInflectorWorksWithDottedRequestParts() { $this->request->setModuleName('foo')->setControllerName('car.bar')->setActionName('baz'); $controller = new Bar_IndexController($this->request, $this->response, array()); $this->helper->setActionController($controller); $viewScriptPaths = $this->helper->view->getAllPaths(); $expectedPathRegex = '#modules/foo/views/scripts/$#'; $this->assertRegExp($expectedPathRegex, $this->_normalizePath($viewScriptPaths['script'][0])); $this->assertEquals('car-bar/baz.phtml', $this->helper->getViewScript()); }
public function testRenderNormalizationIsCorrect() { $this->request->setModuleName('default')->setControllerName('foo')->setActionName('myBar'); $controller = new Bar_IndexController($this->request, $this->response, array()); $this->helper->setActionController($controller); $scriptName = $this->helper->getViewScript(); $this->assertEquals('foo/mybar.phtml', $scriptName); $this->request->setModuleName('default')->setControllerName('foo')->setActionName('baz__bat'); $scriptName = $this->helper->getViewScript(); $this->assertEquals('foo/baz-bat.phtml', $scriptName); $this->request->setModuleName('default')->setControllerName('Foo_Bar')->setActionName('bar__baz'); $scriptName = $this->helper->getViewScript(); $this->assertEquals('foo/bar/bar-baz.phtml', $scriptName); }
/** * @issue ZF-2443 */ public function testStockInflectorWorksWithViewBaseSpec() { $this->request->setModuleName('bar') // bar must exist so the ViewRendere doesnt throw an exception ->setControllerName('index') ->setActionName('admin'); $controller = new Bar_IndexController($this->request, $this->response, array()); $this->helper->setActionController($controller); $this->helper->setView($view = new Zend_View()); $this->helper->setViewBasePathSpec(':moduleDir/:module'); $this->helper->initView(); $viewScriptPaths = $view->getAllPaths(); $this->assertRegExp('#modules/bar/bar/scripts/$#', $viewScriptPaths['script'][0]); $this->assertEquals($this->helper->getViewScript(), 'index/admin.phtml'); }
/** * Tries to render a delegate action's default template if it exists. * * Because we can't always know the short name of a delegate (like we can * with a controller), the default view spec of :controller/:action:suffix * won't work for us. This means we can't just prepend our default paths to * the view script paths. Instead, this function changes the viewRenderer * spec to just :action:suffix, puts in the default dirs, tries to render * and then flips back the settings afterwards. * * @todo Ugly, needs refactoring * @param Zend_Controller_Action_Helper_ViewRenderer $viewRenderer * @param Zend_View_Abstract $view * @param string $action Name of the action, without the "Action" suffix */ protected function _renderDefaultScript($viewRenderer, $view, $action) { //No settings? Abort to save cycles $defaultPaths = $this->getDefaultScriptPaths(); if (empty($defaultPaths)) { return; } //Save the old settings $oldSpec = $viewRenderer->getNoController(); $oldPaths = $view->getScriptPaths(); //Set the viewrenderer spec to look inside a flat directory $viewRenderer->setNoController(true); $view->setScriptPath($defaultPaths); $path = $viewRenderer->getViewScript($action); //relative path $fullPath = $view->getScriptPath($path); //absolute path //We use the full path to make sure this template actually exists on //disc but Zend_View will only accept a path relative to a script dir. if (!empty($fullPath) !== false) { $viewRenderer->renderScript($path); } //Reset view settings so we don't botch anything afterwards? $viewRenderer->setNoController($oldSpec); $view->setScriptPath($oldPaths); }