3
    $user = $this->User->find( 'all' );
    $this->set( 'users', $user );

コントローラーにこのコードがあります。

私の見解では、私はこれを持っています。

echo json_encode( compact( 'users' ) );

このようにjsonを出力します

    {
    "users": [{
        "User": {
            "user_id": "2",
            "email": "email@test.com",
            "name": "Blah"
        }]
    }
}

これをフォーマットして、「ユーザー」でラップされた配列全体を削除し、「ユーザー」のメンバーであるすべてのオブジェクトも削除する方法はありますか。

これにより、フロントエンドでの使用が難しくなります。私はそれがこのように見えることを望みます。

[{
    "user_id": "2",
    "email": "email@test.com",
    "name": "Blah"
}]

助けてくれてありがとう。

4

2 に答える 2

7

「「ユーザー」にラップされた配列全体を削除する」と「「ユーザー」のメンバーであるすべてのオブジェクトを削除する」の意味が完全にはわかりませんが、希望する出力形式の例によれば、抽出する必要がありますjson_encodeを使用してすべてを渡すのではなく、エンコードしたい正確なデータを渡しますcompact

Set抽出はまたはクラスで行うことができHashます (Cake のバージョンによって異なります)。

モデルがデフォルトの CakePHP 形式でデータを返すと仮定します。たとえば、次のようになります。

json_encode(Set::extract('/User/.', $users));

次のような構造が得られるはずです。

[{
    "user_id": "2",
    "email": "email@test.com",
    "name": "Blah"
}]

複数のユーザーの場合、次のようになります

[{
    "user_id": "1",
    "email": "foo@test.com",
    "name": "Bar"
},
{
    "user_id": "2",
    "email": "email@test.com",
    "name": "Blah"
}]
于 2012-10-21T20:18:28.857 に答える