私のCakePHPアプリでは、beforeFilterでいくつかのことを行い、ユーザーまたは認証などに関する応答とともに追加のJSONデータを渡します.
例えば:
public function beforeFilter()
{
$this->Auth->allow(array('index'));
// If the request is either JSON or XML
if ( $this->params['ext'] == 'json' || $this->params['ext'] == 'xml' )
{
if( $this->Auth->user() )
{
// User is logged in so send userdata and usual response will also be passed
$response = array('meta' =>
array(
'auth' => true,
'user_id' => $this->Auth->user('id')
)
);
echo json_encode($response);
}
else
{
$requiresAuth = !in_array($this->params['action'], $this->Auth->allowedActions);
if ($requiresAuth)
{
$response = array('meta' =>
array(
'auth' => false
)
);
echo json_encode($response);
exit; // exit so no other responses go through
}
else
{
// Send JSON usual response
$response = array('meta' =>
array(
'auth' => false
)
);
echo json_encode($response);
}
}
}
parent::beforeFilter();
}
これは、モバイル アプリ用の RESTful API を構築するために使用されます。ここでの問題は、返される完全な JSON が次のようになることです。
{
"meta": {
"auth": false,
}
} {
"posts": [{
"Post": {
"id": "136",
"user_id": "8",
"datetime": "2012-09-11 15:49:52",
"modified": "2012-09-16 15:31:38",
"title": "Where is good to eat in New York?",
"slug": "Where_is_good_to_eat_in_New_York",
"content": "Preferably italian or mexican and with a good atmosphere.\r\n\r\nAlso within the **Manhattan** area!",
"status": "1",
"promoted": "0",
"latitude": "53.6570794",
"longitude": "-1.8277604"
},...
ご覧のとおり、2 つの JSON オブジェクトが正しく結合されていません... どうすれば修正できますか?
CakePHP 2.3 の使用