2016-10-24 54 views
1

我有以下数据的用户表:CakePHP虚拟字段发送头文件?

class User extends Entity 
{ 

protected $_virtual = ['createdformated','modifiedformated']; 

protected function _getCreatedformated() 
{ 
    $date = new Time($this->_properties['created']); 
    $final=strftime("%d/%m/%Y %H:%M", $date->getTimestamp()); 
    return $final; 
} 

protected function _getModifiedformated() 
{ 
    $date = new Time($this->_properties['modified']); 
    $final=strftime("%d/%m/%Y %H:%M", $date->getTimestamp()); 
    return $final; 
} 
} 

如果在我的控制器我打电话:

$logusers["data"] = $this->Logusers->find('all') 
     ->contain(['Users']) 
     ->order(['Logusers.id'=>'DESC']); 

    echo json_encode($logusers); 

而且jsonenconde

Warning (512): Unable to emit headers. Headers sent in file=C:\wamp\www\otras\mailing\src\Controller\UsersController.php line=91 [CORE\src\Http\ResponseEmitter.php, line 48] 

后,我得到以下。如果我只留下1(一个)虚拟字段,问题就不存在了......问题只有在我启用它们时才会发生。

是什么问题?

回答

2

问题是你的回声在那里。

执行sending JSON via CakePHP的正确方法或将json传递给响应主体并返回控制器操作中的响应。

+0

这是正确的做法吗? $ this-> response-> type('json'); $ this-> response-> body(json_encode($ logusers)); –

+0

应该可以工作。不过,我个人更喜欢JSON视图,因为它不需要您向操作添加请求特定的代码。 Cake会检测到请求是JSON并为你配置相应的响应。 – burzum

+0

嗯,只是在看文档,并没有解释,它告诉我加载组件并设置_serialize,但没有任何反应。 –