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
*
* @copyright NetMonsters <team@netmonsters.ru>
* @link
* @link http://netmonsters.ru
* @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
{
/**
* Data to output
* @var mixed
*/
public $data = 1;
protected $encode = true;
/**
* Use json_encode
* @var bool
*/
protected $json_encode = true;
function __construct()
{
@ -28,10 +34,13 @@ abstract class AjaxAction extends Action
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");
$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());
}
}

2
tests/app/AjaxActionTest.php

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

Loading…
Cancel
Save