예제 #1
0
 public function testInitializationInjectsViewIntoViewRenderer()
 {
     $resource = new ViewResource(array());
     $resource->init();
     $view = $resource->getView();
     $viewRenderer = HelperBroker::getStaticHelper('ViewRenderer');
     $this->assertSame($view, $viewRenderer->view);
 }
예제 #2
0
파일: Json.php 프로젝트: heiglandreas/zf2
 /**
  * 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::getStaticHelper('viewRenderer')->setNoRender(true);
     }
     return $data;
 }
예제 #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()
 {
     Layout::resetMvcInstance();
     HelperBroker::resetHelpers();
     HelperBroker::setPluginLoader(null);
     $this->request = new HTTPRequest();
     $this->response = new CLIResponse();
     $this->front = FrontController::getInstance();
     $this->front->resetInstance();
     $this->front->setRequest($this->request)->setResponse($this->response);
     $this->viewRenderer = HelperBroker::getStaticHelper('viewRenderer');
     $this->layout = Layout::startMvc();
 }
예제 #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()
 {
     \Zend\Layout\Layout::resetMvcInstance();
     HelperBroker::resetHelpers();
     $this->front = Controller\Front::getInstance();
     $this->front->resetInstance();
     $this->front->addModuleDirectory(__DIR__ . '/../../_files/modules');
     $this->layout = Layout\Layout::startMvc();
     $this->helper = new Helper\ContextSwitch();
     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(__DIR__);
     $this->view = new \Zend\View\View();
     $this->viewRenderer = 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);
 }
예제 #5
0
 /**
  * Prepare data for autocompletion
  *
  * @param  mixed   $data
  * @param  boolean $keepLayouts
  * @return string
  */
 public function prepareAutoCompletion($data, $keepLayouts = false)
 {
     if (!$data instanceof DojoData) {
         $items = array();
         foreach ($data as $key => $value) {
             $items[] = array('label' => $value, 'name' => $value);
         }
         $data = new DojoData('name', $items);
     }
     if (!$keepLayouts) {
         HelperBroker::getStaticHelper('viewRenderer')->setNoRender(true);
         $layout = Layout::getMvcInstance();
         if ($layout instanceof Layout) {
             $layout->disableLayout();
         }
     }
     $response = FrontController::getInstance()->getResponse();
     $response->setHeader('Content-Type', 'application/json');
     return $data->toJson();
 }
예제 #6
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::resetHelpers();
     HelperBroker::addPrefix('Zend\\Controller\\Action\\Helper');
     $this->front = \Zend\Controller\Front::getInstance();
     $this->front->resetInstance();
     $this->front->addModuleDirectory(__DIR__ . '/../../_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(__DIR__ . '/../../../../../library/Zend/View/Helper/');
     $this->viewRenderer = HelperBroker::getStaticHelper('viewRenderer');
     $this->viewRenderer->setView($this->view);
     $this->controller = new AjaxContextTestController($this->request, $this->response, array());
     $this->helper->setActionController($this->controller);
 }
예제 #7
0
 /**
  * Gets content panel for the Debugbar
  *
  * @return string
  */
 public function getPanel()
 {
     $this->_request = FrontController::getInstance()->getRequest();
     $viewRenderer = \Zend\Controller\Action\HelperBroker::getStaticHelper('viewRenderer');
     if ($viewRenderer->view && method_exists($viewRenderer->view, 'getVars')) {
         $viewVars = $this->_cleanData($viewRenderer->view->getVars());
     } else {
         $viewVars = "No 'getVars()' method in view class";
     }
     $vars = '<div style="width:50%;float:left;">';
     $vars .= '<h4>View variables</h4>' . '<div id="ZFDebug_vars" style="margin-left:-22px">' . $viewVars . '</div>' . '<h4>Request parameters</h4>' . '<div id="ZFDebug_requests" style="margin-left:-22px">' . $this->_cleanData($this->_request->getParams()) . '</div>';
     $vars .= '</div><div style="width:45%;float:left;">';
     if ($this->_request->isPost()) {
         $vars .= '<h4>Post variables</h4>' . '<div id="ZFDebug_post" style="margin-left:-22px">' . $this->_cleanData($this->_request->getPost()) . '</div>';
     }
     $registry = \Zend\Registry::getInstance();
     $vars .= '<h4>Zend Registry</h4>';
     $registry->ksort();
     $vars .= '<div id="ZFDebug_registry" style="margin-left:-22px">' . $this->_cleanData($registry) . '</div>';
     $cookies = $this->_request->getCookie();
     $vars .= '<h4>Cookies</h4>' . '<div id="ZFDebug_cookie" style="margin-left:-22px">' . $this->_cleanData($cookies) . '</div>';
     $vars .= '</div><div style="clear:both">&nbsp;</div>';
     return $vars;
 }
예제 #8
0
 /**
  * Retrieve ViewRenderer
  *
  * @return \Zend\Controller\Action\Helper\ViewRenderer Provides a fluent interface
  */
 protected function _getViewRenderer()
 {
     if (null === $this->_viewRenderer) {
         $this->_viewRenderer = HelperBroker::getStaticHelper('viewRenderer');
     }
     return $this->_viewRenderer;
 }
예제 #9
0
 /**
  * Retrieves the view instance.  If none registered, attempts to pull f
  * rom ViewRenderer.
  *
  * @return \Zend\View\ViewEngine|null
  */
 public function getView()
 {
     if ($this->_view === null) {
         $viewRenderer = \Zend\Controller\Action\HelperBroker::getStaticHelper('viewRenderer');
         if ($viewRenderer->view === null) {
             $viewRenderer->initView();
         }
         $this->_view = $viewRenderer->view;
     }
     return $this->_view;
 }
예제 #10
0
 public function testGetViewReturnsViewRendererViewInstanceIfViewRendererActive()
 {
     $viewRenderer = HelperBroker::getStaticHelper('viewRenderer');
     $viewRenderer->initView();
     $view = $viewRenderer->view;
     $test = $this->element->getView();
     $this->assertSame($view, $test);
 }
예제 #11
0
파일: Action.php 프로젝트: heiglandreas/zf2
 /**
  * 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::getStaticHelper('viewRenderer');
     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::addHelper($viewRendererObj);
     if (!$this->request->isDispatched() || $this->response->isRedirect()) {
         // forwards and redirects render nothing
         return '';
     }
     $return = $this->response->getBody();
     $this->resetObjects();
     return $return;
 }
예제 #12
0
 public function testResetResponseShouldClearAllViewPlaceholders()
 {
     $this->testCase->getFrontController()->setControllerDirectory(__DIR__ . '/_files/application/controllers');
     $viewRenderer = HelperBroker::getStaticHelper('viewRenderer');
     $viewRenderer->initView();
     $view = $viewRenderer->view;
     $view->addHelperPath('Zend/Dojo/View/Helper', 'Zend\\Dojo\\View\\Helper');
     $view->dojo()->setCdnVersion('1.1.0')->requireModule('dojo.parser')->enable();
     $view->headTitle('Foo');
     $this->testCase->dispatch('/zend-test-php-unit-foo/baz');
     $response = $this->testCase->getResponse();
     $this->testCase->resetResponse();
     $view = new \Zend\View\View();
     $view->addHelperPath('Zend/Dojo/View/Helper', 'Zend\\Dojo\\View\\Helper');
     $this->assertFalse($view->dojo()->isEnabled(), 'Dojo is enabled? ', $view->dojo());
     $this->assertNotContains('Foo', $view->headTitle()->__toString(), 'Head title persisted?');
 }
예제 #13
0
파일: FormTest.php 프로젝트: narixx/zf2
 public function testGetViewRetrievesFromViewRendererByDefault()
 {
     $viewRenderer = ActionHelperBroker::getStaticHelper('viewRenderer');
     $viewRenderer->initView();
     $view = $viewRenderer->view;
     $test = $this->form->getView();
     $this->assertSame($view, $test);
 }
예제 #14
0
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Test
 * @subpackage UnitTests
 * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id$
 */
/**
 * @namespace
 */
namespace ZendTest\Test\PHPUnit\_files;

$router = new \Zend\Controller\Router\Rewrite();
$dispatcher = new \Zend\Controller\Dispatcher\Standard();
$plugin = new \Zend\Controller\Plugin\ErrorHandler();
$controller = \Zend\Controller\Front::getInstance();
$controller->setParam('foo', 'bar')->registerPlugin($plugin)->setRouter($router)->setDispatcher($dispatcher);
$viewRenderer = \Zend\Controller\Action\HelperBroker::getStaticHelper('ViewRenderer');
\Zend\Registry::set('router', $router);
\Zend\Registry::set('dispatcher', $dispatcher);
\Zend\Registry::set('plugin', $plugin);
\Zend\Registry::set('viewRenderer', $viewRenderer);
예제 #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::addHelper($viewRenderer);
     // make sure noRender is false
     $this->assertFalse($viewRenderer->getNoRender());
     $value = $this->helper->direct('bar', 'action-foo');
     $viewRendererPostAction = HelperBroker::getStaticHelper('viewRenderer');
     // ViewRenderer noRender should still be false
     $this->assertFalse($viewRendererPostAction->getNoRender());
     $this->assertSame($viewRenderer, $viewRendererPostAction);
 }
예제 #16
0
 /**
  * @return void
  */
 public function testHelperClassPassedToStartMvcIsUsed()
 {
     $layout = Layout\Layout::startMvc(array('helperClass' => 'ZendTest\\Layout\\TestAsset\\MockActionHelper\\Layout'));
     $this->assertTrue(HelperBroker::hasHelper('layout'));
     $helper = HelperBroker::getStaticHelper('layout');
     $this->assertTrue($helper instanceof \ZendTest\Layout\TestAsset\MockActionHelper\Layout);
 }
예제 #17
0
 public function testGetViewScriptDoesNotOverwriteNoControllerFlagWhenNullPassed()
 {
     Controller\Front::getInstance()->setControllerDirectory(__DIR__ . DIRECTORY_SEPARATOR . '_files');
     $viewRenderer = 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());
 }
예제 #18
0
 protected function _isXhtml()
 {
     $view = HelperBroker::getStaticHelper('viewRenderer')->view;
     $doctype = $view->doctype();
     return $doctype->isXhtml();
 }
예제 #19
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(__DIR__ . '/_files/layouts')->setLayout('plugin.phtml')->disableInflector();
     $helper = 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);
 }
예제 #20
0
파일: Mvc.php 프로젝트: heiglandreas/zf2
 /**
  * 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::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());
     return $this->_hrefCache = $url;
 }
예제 #21
0
 /**
  * Dispatch the MVC
  *
  * If a URL is provided, sets it as the request URI in the request object.
  * Then sets test case request and response objects in front controller,
  * disables throwing exceptions, and disables returning the response.
  * Finally, dispatches the front controller.
  *
  * @param  string|null $url
  * @return void
  */
 public function dispatch($url = null)
 {
     // redirector should not exit
     $redirector = HelperBroker::getStaticHelper('redirector');
     $redirector->setExit(false);
     // json helper should not exit
     $json = HelperBroker::getStaticHelper('json');
     $json->suppressExit = true;
     $request = $this->getRequest();
     if (null !== $url) {
         $request->setRequestUri($url);
     }
     $request->setPathInfo(null);
     $controller = $this->getFrontController();
     $this->frontController->setRequest($request)->setResponse($this->getResponse())->throwExceptions(false)->returnResponse(false);
     if ($this->bootstrap instanceof Application\Application) {
         $this->bootstrap->run();
     } else {
         $this->frontController->dispatch();
     }
 }
예제 #22
0
 protected function _isXhtml()
 {
     if ($view = \Zend\Controller\Action\HelperBroker::getStaticHelper('viewRenderer')->view) {
         $doctype = $view->doctype();
         return $doctype->isXhtml();
     }
     return false;
 }
예제 #23
0
파일: Form.php 프로젝트: heiglandreas/zf2
 /**
  * Retrieve view object
  *
  * If none registered, attempts to pull from ViewRenderer.
  *
  * @return \Zend\View\ViewEngine|null
  */
 public function getView()
 {
     if (null === $this->_view) {
         $viewRenderer = ActionHelperBroker::getStaticHelper('viewRenderer');
         $this->setView($viewRenderer->view);
     }
     return $this->_view;
 }
예제 #24
0
 /**
  * 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::getStaticHelper('Json')->encodeJson($data, $keepLayouts);
     }
     throw new \Zend\Controller\Action\Exception('Invalid data passed for autocompletion');
 }
예제 #25
0
 /**
  * @see ZF-3494
  */
 public function testGetViewShouldNotReturnNullWhenViewRendererIsActive()
 {
     $viewRenderer = ActionHelperBroker::getStaticHelper('ViewRenderer');
     $viewRenderer->initView();
     $view = $this->group->getView();
     $this->assertSame($viewRenderer->view, $view);
 }
예제 #26
0
 public function testHelperPathStackIsLifo()
 {
     HelperBroker::addPath(dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'Helpers', 'MyApp');
     $urlHelper = HelperBroker::getStaticHelper('url');
     $this->assertTrue($urlHelper instanceof \MyApp\Url);
 }
예제 #27
0
 public function testGetsViewFromViewRenderer()
 {
     $viewRenderer = HelperBroker::getStaticHelper('viewRenderer');
     $viewRenderer->setView(new View\View());
     $this->assertType('Zend\\View\\ViewEngine', $this->_paginator->getView());
 }
예제 #28
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::getStaticHelper('URL');
     Page\Mvc::setUrlHelper($old);
     $this->assertEquals($expected, $actual);
 }