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.
This commit is contained in:
@ -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
|
* @subpackage app
|
||||||
* @since
|
* @since 2011-04-27
|
||||||
* @version SVN: $Id$
|
|
||||||
* @filesource $URL$
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* базовый класс для всей экшенов выполняющихся по аякс-запросу
|
* 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");
|
if ($this->json_encode === true) {
|
||||||
header("Content-type: text/html; charset=utf-8");
|
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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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' );
|
||||||
|
Reference in New Issue
Block a user