Вопрос

Я не совсем уверен, что требуется для того, чтобы действие возвращало json.
Я уверен, что есть более одного способа освежевать эту кошку, но я не уверен, какой именно абсолютно необходим.

Достаточно ли просто $this-> render(array('json' => compact('данные'));?
Нужно ли мне добавлять маршрут с указанием его json?
Нужно ли мне также добавить тип носителя application / json?
Нужно ли мне также добавить макет по умолчанию default.json.php?
Нужно ли мне также добавить представление action.json.php?

Примечания:Мне нужен любой произвольный URL:www.mysite.com/Controller/Action чтобы всегда возвращать json.
Я бы предпочел иметь возможность указывать возвращаемый тип ТОЛЬКО в моем действии (т. е. тип рендеринга).

Это было полезно?

Решение

Так что ничего не оказывается в OP, требуется другой, тогда эта строка, когда вы возвращаете данные в нижней части действия контроллера:

    return $this->render(array('json' => $data = array(), 'status'=> 200));
.

Сомечены, что следует отметить, так это то, что данные, возвращаемые из записи, действительно уродливы.Пользователи должны сделать $ RELOCKSET -OST -> («ARRAY»).Не уверен, почему, но («JSON») заканчивается избежать всех кавычек, что делает строку JSON действительно Funky.

Другие советы

Вернуть JSON проще, чем вы могли бы подумать.Я недавно сделал это и был удивлен

Я просто показываю это вам, ссылаясь на игру, которую я разрабатываю - https://github.com/BitAlchemists/Elenears-Erben/blob/master/app/controllers/MapsController.php

public function view()
{
    $gameId = $this->request->params['id'];
    if($gameId == null)
    {
        return new Response();
    }

    $xSize = 10;
    $ySize = 10;
    $fields = Maps::first(array('game_id' => $gameId))->fields;
    return compact('xSize', 'ySize', 'fields');
}

Вот ты где:Вы просто подготавливаете свои данные и возвращаете их.Волшебство совершается с помощью Media класс.Я не знаю, нужно ли вам добавлять Media.php к Bootstrap.php, просто попробуйте.

Я предполагаю, что объяснение в том, что вам не нужно предоставлять представление или что-то еще, потому что Lithium уже знает, как представить JSON.Это также научит вас кое-чему, что на самом деле должен делать контроллер, потому что, если бы вы написали представление для того же действия, ему в основном потребовались бы те же данные.

Ваше здоровье

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top