Exemple #1
0
 /**
  * Create JSON response
  *
  * Encodes and returns data to JSON. Content-Type header set to
  * 'application/json', and disables layouts and viewRenderer (if being
  * used).
  *
  * @param  mixed   $data
  * @param  boolean $keepLayouts
  * @param  boolean|array $keepLayouts
  * NOTE:   if boolean, establish $keepLayouts to true|false
  *         if array, admit params for Zend_Json::encode as enableJsonExprFinder=>true|false
  *         if $keepLayouts and parmas for Zend_Json::encode are required
  *         then, the array can contains a 'keepLayout'=>true|false
  *         that will not be passed to Zend_Json::encode method but will be passed
  *         to Zend_View_Helper_Json
  * @throws \Zend\Controller\Action\Helper\JSON
  * @return string
  */
 public function encodeJson($data, $keepLayouts = false)
 {
     $jsonHelper = new \Zend\View\Helper\JSON();
     $data = $jsonHelper->direct($data, $keepLayouts);
     if (!$keepLayouts) {
         \Zend\Controller\Action\HelperBroker\HelperBroker::getStaticHelper('viewRenderer')->setNoRender(true);
     }
     return $data;
 }
Exemple #2
0
 /**
  * Sets up the fixture, for example, open a network connection.
  * This method is called before a test is executed.
  *
  * @return void
  */
 public function setUp()
 {
     $this->markTestSkipped('Skipped until DOJO is converted to Zend\\Dojo');
     \Zend\Layout\Layout::resetMvcInstance();
     HelperBroker\HelperBroker::resetHelpers();
     HelperBroker\HelperBroker::setPluginLoader(null);
     $this->request = new \Zend\Controller\Request\HTTP();
     $this->response = new \Zend\Controller\Response\Cli();
     $this->front = \Zend\Controller\Front::getInstance();
     $this->front->resetInstance();
     $this->front->setRequest($this->request)->setResponse($this->response);
     $this->viewRenderer = HelperBroker\HelperBroker::getStaticHelper('viewRenderer');
     $this->layout = Layout\Layout::startMvc();
 }
Exemple #3
0
 /**
  * Sets up the fixture, for example, open a network connection.
  * This method is called before a test is executed.
  *
  * @return void
  */
 public function setUp()
 {
     \Zend\Layout\Layout::resetMvcInstance();
     HelperBroker\HelperBroker::resetHelpers();
     $this->front = Controller\Front::getInstance();
     $this->front->resetInstance();
     $this->front->addModuleDirectory(dirname(__FILE__) . '/../../_files/modules');
     $this->layout = Layout\Layout::startMvc();
     $this->helper = new Helper\ContextSwitch();
     HelperBroker\HelperBroker::addHelper($this->helper);
     $this->request = new \Zend\Controller\Request\HTTP();
     $this->response = new \Zend\Controller\Response\Cli();
     $this->front->setRequest($this->request)->setResponse($this->response)->addControllerDirectory(dirname(__FILE__));
     $this->view = new \Zend\View\View();
     $this->viewRenderer = HelperBroker\HelperBroker::getStaticHelper('viewRenderer');
     $this->viewRenderer->setView($this->view);
     $this->controller = new ContextSwitchTestController($this->request, $this->response, array());
     $this->controller->setupContexts();
     $this->helper->setActionController($this->controller);
 }
Exemple #4
0
 /**
  * Sets up the fixture, for example, open a network connection.
  * This method is called before a test is executed.
  *
  * @return void
  */
 public function setUp()
 {
     if (isset($_SERVER['HTTP_X_REQUESTED_WITH'])) {
         unset($_SERVER['HTTP_X_REQUESTED_WITH']);
     }
     \Zend\Layout\Layout::resetMvcInstance();
     HelperBroker\HelperBroker::resetHelpers();
     HelperBroker\HelperBroker::addPrefix('Zend\\Controller\\Action\\Helper');
     $this->front = \Zend\Controller\Front::getInstance();
     $this->front->resetInstance();
     $this->front->addModuleDirectory(dirname(__FILE__) . '/../../_files/modules');
     $this->layout = Layout\Layout::startMvc();
     $this->helper = new \Zend\Controller\Action\Helper\AjaxContext();
     $this->request = new \Zend\Controller\Request\HTTP();
     $this->response = new \Zend\Controller\Response\Cli();
     $this->front->setRequest($this->request)->setResponse($this->response);
     $this->view = new \Zend\View\View();
     $this->view->addHelperPath(dirname(__FILE__) . '/../../../../../library/Zend/View/Helper/');
     $this->viewRenderer = HelperBroker\HelperBroker::getStaticHelper('viewRenderer');
     $this->viewRenderer->setView($this->view);
     $this->controller = new AjaxContextTestController($this->request, $this->response, array());
     $this->helper->setActionController($this->controller);
 }
Exemple #5
0
 /**
  * Retrieve ViewRenderer
  *
  * @return \Zend\Controller\Action\Helper\ViewRenderer Provides a fluent interface
  */
 protected function _getViewRenderer()
 {
     if (null === $this->_viewRenderer) {
         $this->_viewRenderer = HelperBroker\HelperBroker::getStaticHelper('viewRenderer');
     }
     return $this->_viewRenderer;
 }
Exemple #6
0
 /**
  * Retrieve rendered contents of a controller action
  *
  * If the action results in a forward or redirect, returns empty string.
  *
  * @param  string $action
  * @param  string $controller
  * @param  string $module Defaults to default module
  * @param  array $params
  * @return string
  */
 public function direct($action = null, $controller = null, $module = null, array $params = array())
 {
     if ($action == null || $controller == null) {
         throw new \InvalidArgumentException('Action: missing argument. $action and $controller are required in action($action, $controller, $module = null, array $params = array())');
     }
     $this->resetObjects();
     if (null === $module) {
         $module = $this->defaultModule;
     }
     // clone the view object to prevent over-writing of view variables
     $viewRendererObj = HelperBroker\HelperBroker::getStaticHelper('viewRenderer');
     HelperBroker\HelperBroker::addHelper(clone $viewRendererObj);
     $this->request->setParams($params)->setModuleName($module)->setControllerName($controller)->setActionName($action)->setDispatched(true);
     $this->dispatcher->dispatch($this->request, $this->response);
     // reset the viewRenderer object to it's original state
     HelperBroker\HelperBroker::addHelper($viewRendererObj);
     if (!$this->request->isDispatched() || $this->response->isRedirect()) {
         // forwards and redirects render nothing
         return '';
     }
     $return = $this->response->getBody();
     $this->resetObjects();
     return $return;
 }
Exemple #7
0
 public function testHelperPathStackIsLifo()
 {
     HelperBroker\HelperBroker::addPath(dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'Helpers', 'MyApp');
     $urlHelper = HelperBroker\HelperBroker::getStaticHelper('url');
     $this->assertTrue($urlHelper instanceof \MyApp\Url);
 }
Exemple #8
0
 /**
  * @return void
  */
 public function testHelperClassPassedToStartMvcIsUsed()
 {
     $layout = Layout\Layout::startMvc(array('helperClass' => 'ZendTest\\Layout\\TestAsset\\MockActionHelper\\Layout'));
     $this->assertTrue(HelperBroker\HelperBroker::hasHelper('layout'));
     $helper = HelperBroker\HelperBroker::getStaticHelper('layout');
     $this->assertTrue($helper instanceof \ZendTest\Layout\TestAsset\MockActionHelper\Layout);
 }
Exemple #9
0
 /**
  * Get current view object
  *
  * If no view object currently set, retrieves it from the ViewRenderer.
  *
  * @todo Set inflector from view renderer at same time
  * @return \Zend\View\ViewInterface
  */
 public function getView()
 {
     if (null === $this->_view) {
         $viewRenderer = HelperBroker\HelperBroker::getStaticHelper('viewRenderer');
         if (null === $viewRenderer->view) {
             $viewRenderer->initView();
         }
         $this->setView($viewRenderer->view);
     }
     return $this->_view;
 }
Exemple #10
0
 /**
  * Returns href for this page
  *
  * This method uses {@link Zend_Controller_Action_Helper_Url} to assemble
  * the href based on the page's properties.
  *
  * @return string  page href
  */
 public function getHref()
 {
     if ($this->_hrefCache) {
         return $this->_hrefCache;
     }
     if (null === self::$_urlHelper) {
         self::$_urlHelper = \Zend\Controller\Action\HelperBroker\HelperBroker::getStaticHelper('URL');
     }
     $params = $this->getParams();
     if (($param = $this->getModule()) != null) {
         $params['module'] = $param;
     }
     if (($param = $this->getController()) != null) {
         $params['controller'] = $param;
     }
     if (($param = $this->getAction()) != null) {
         $params['action'] = $param;
     }
     $url = self::$_urlHelper->__invoke($params, $this->getRoute(), $this->getResetParams());
     //var_dump($url);
     return $this->_hrefCache = $url;
 }
 /**
  * Encode data to JSON
  *
  * @param  mixed $data
  * @param  bool  $keepLayouts
  * @throws \Zend\Controller\Action\Exception
  * @return string
  */
 public function encodeJson($data, $keepLayouts = false)
 {
     if ($this->validateData($data)) {
         return HelperBroker\HelperBroker::getStaticHelper('Json')->encodeJson($data, $keepLayouts);
     }
     throw new \Zend\Controller\Action\Exception('Invalid data passed for autocompletion');
 }
Exemple #12
0
 /**
  * Retrieves the view instance.  If none registered, attempts to pull f
  * rom ViewRenderer.
  *
  * @return \Zend\View\ViewInterface|null
  */
 public function getView()
 {
     if ($this->_view === null) {
         $viewRenderer = \Zend\Controller\Action\HelperBroker\HelperBroker::getStaticHelper('viewRenderer');
         if ($viewRenderer->view === null) {
             $viewRenderer->initView();
         }
         $this->_view = $viewRenderer->view;
     }
     return $this->_view;
 }
Exemple #13
0
 public function testGetsViewFromViewRenderer()
 {
     $viewRenderer = HelperBroker\HelperBroker::getStaticHelper('viewRenderer');
     $viewRenderer->setView(new View\View());
     $this->assertType('Zend\\View\\ViewInterface', $this->_paginator->getView());
 }
Exemple #14
0
 public function testSpecifyingAnotherUrlHelperToGenerateHrefs()
 {
     $newHelper = new \ZendTest\Navigation\TestAsset\UrlHelper();
     Page\Mvc::setUrlHelper($newHelper);
     $page = new Page\Mvc();
     $expected = \ZendTest\Navigation\TestAsset\UrlHelper::RETURN_URL;
     $actual = $page->getHref();
     $old = \Zend\Controller\Action\HelperBroker\HelperBroker::getStaticHelper('URL');
     Page\Mvc::setUrlHelper($old);
     $this->assertEquals($expected, $actual);
 }
Exemple #15
0
 /**
  * Future ViewRenderer State issues should be included in this test.
  *
  * @issue ZF-2846
  */
 public function testActionReturnsViewRendererToOriginalState()
 {
     /* Setup the VR as if we were inside an action controller */
     $viewRenderer = new \Zend\Controller\Action\Helper\ViewRenderer();
     $viewRenderer->init();
     HelperBroker\HelperBroker::addHelper($viewRenderer);
     // make sure noRender is false
     $this->assertFalse($viewRenderer->getNoRender());
     $value = $this->helper->direct('bar', 'action-foo');
     $viewRendererPostAction = HelperBroker\HelperBroker::getStaticHelper('viewRenderer');
     // ViewRenderer noRender should still be false
     $this->assertFalse($viewRendererPostAction->getNoRender());
     $this->assertSame($viewRenderer, $viewRendererPostAction);
 }
Exemple #16
0
 public function testPostDispatchRendersLayout()
 {
     $front = Controller\Front::getInstance();
     $request = new Request\Simple();
     $response = new Response\Cli();
     $request->setDispatched(true);
     $response->setBody('Application content');
     $front->setRequest($request)->setResponse($response);
     $layout = Layout\Layout::startMvc();
     $layout->setLayoutPath(dirname(__FILE__) . '/_files/layouts')->setLayout('plugin.phtml')->disableInflector();
     $helper = HelperBroker\HelperBroker::getStaticHelper('layout');
     $plugin = $front->getPlugin('Zend\\Layout\\Controller\\Plugin\\Layout');
     $plugin->setResponse($response);
     $helper->postDispatch();
     $plugin->postDispatch($request);
     $body = $response->getBody();
     $this->assertContains('Application content', $body, $body);
     $this->assertContains('Site Layout', $body, $body);
 }
Exemple #17
0
 public function testGetViewScriptDoesNotOverwriteNoControllerFlagWhenNullPassed()
 {
     Controller\Front::getInstance()->setControllerDirectory(dirname(__FILE__) . DIRECTORY_SEPARATOR . '_files');
     $viewRenderer = HelperBroker\HelperBroker::getStaticHelper('viewRenderer');
     $request = new Request\HTTP();
     $request->setControllerName('view')->setActionName('test');
     $response = new Response\Cli();
     $controller = new \ViewController($request, $response);
     $this->assertSame($viewRenderer->getActionController(), $controller);
     $viewRenderer->setNoController(true);
     $this->assertTrue($viewRenderer->getNoController());
     $script = $controller->getViewScript();
     $this->assertTrue($viewRenderer->getNoController());
 }