Browse Source

Fixes for AjaxAction to send different header Content-type with $this->json_encode == true and $this->json_encode == false . This includes refactoring of $this->encode to $this->json_encode.

master
Anton Terekhov 12 years ago
parent
commit
4fa078d709
  1. 29
      app/AjaxAction.php
  2. 2
      tests/app/AjaxActionTest.php

29
app/AjaxAction.php

@ -3,22 +3,28 @@
* AjaxAction * AjaxAction
* *
* @copyright NetMonsters <team@netmonsters.ru> * @copyright NetMonsters <team@netmonsters.ru>
* @link
* @link http://netmonsters.ru
* @package Majestic * @package Majestic
* @subpackage face
* @since
* @version SVN: $Id$
* @filesource $URL$
* @subpackage app
* @since 2011-04-27
*/ */
/** /**
* базовый класс для всей экшенов выполняющихся по аякс-запросу
* Base class for all ajax Actions
*/ */
abstract class AjaxAction extends Action abstract class AjaxAction extends Action
{ {
/**
* Data to output
* @var mixed
*/
public $data = 1; public $data = 1;
protected $encode = true;
/**
* Use json_encode
* @var bool
*/
protected $json_encode = true;
function __construct() function __construct()
{ {
@ -28,10 +34,13 @@ abstract class AjaxAction extends Action
function fetch() function fetch()
{ {
// header("Content-type: application/json; charset=utf-8");
header("Content-type: text/html; charset=utf-8");
if ($this->json_encode === true) {
header("Content-type: application/json; charset=utf-8");
} else {
header("Content-type: text/html; charset=utf-8");
}
header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: no-store, no-cache, must-revalidate");
$this->view->assign('data', $this->encode ? json_encode($this->data) : $this->data);
$this->view->assign('data', $this->json_encode ? json_encode($this->data) : $this->data);
return $this->view->fetch($this->getTemplate()); return $this->view->fetch($this->getTemplate());
} }
} }

2
tests/app/AjaxActionTest.php

@ -51,7 +51,7 @@ class AjaxActionTest extends Action_TestCase
{ {
Config::set('DEBUG', false); Config::set('DEBUG', false);
Env::setParams(array('encode' => false));
Env::setParams(array('json_encode' => false));
$controller = FrontController::getInstance(); $controller = FrontController::getInstance();
$controller->setView('SomeView'); $controller->setView('SomeView');
$action = $this->getMockForAbstractClass('AjaxAction' ); $action = $this->getMockForAbstractClass('AjaxAction' );

Loading…
Cancel
Save