コード例 #1
0
 /**
  * @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);
 }
コード例 #2
0
 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());
 }
コード例 #3
0
 /**
  * @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);
 }
コード例 #4
0
 /**
  * @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());
 }
コード例 #5
0
 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);
 }
コード例 #6
0
    /**
     * @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');
    }
コード例 #7
0
ファイル: DelegateAbstract.php プロジェクト: rosstuck/trifle
 /**
  * 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);
 }