/** * 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; }
/** * 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(); }
/** * 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); }
/** * 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); }
/** * 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; }
/** * 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; }
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); }
/** * @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); }
/** * 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; }
/** * 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'); }
/** * 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; }
public function testGetsViewFromViewRenderer() { $viewRenderer = HelperBroker\HelperBroker::getStaticHelper('viewRenderer'); $viewRenderer->setView(new View\View()); $this->assertType('Zend\\View\\ViewInterface', $this->_paginator->getView()); }
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); }
/** * 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); }
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); }
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()); }