Pergunta

Eu não sou realmente certo o que é necessário para fazer uma ação de retorno json.
Tenho certeza de que existe mais de uma maneira de pele este gato, mas eu não tenho certeza do que é absolutamente necessário.

É adequado para apenas us $this->render(array('json' => compacto('dados'));?
Eu preciso adicionar uma rota especificando sua json?
Preciso também de adicionar o tipo de mídia application/json?
Eu também precisamos adicionar a predefinição de layout default.json.php?
Preciso também de adicionar o visualizar action.json.php?

Notas:Eu quero qualquer arbitrário de url:www.mysite.com/Controller/Action para sempre retornar json.
Eu gostaria de ser capaz de especificar o tipo de retorno na minha ação SÓ (ou seja, processar tipo).

Foi útil?

Solução

Acontece que nada no op é necessário outro, em seguida, essa linha quando você retornar os dados, na parte inferior do controlador de ação:

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

Algumas coisas que deve ser observado é que os dados retornados de um conjunto de registros é realmente feio.Os usuários devem fazer um $recordset->a('matriz') em primeiro lugar.Não sei por que, mas a('json') acaba de escapar de todas as citações, o que torna a seqüência de caracteres json realmente funky.

Outras dicas

Retornar o JSON é mais fácil do que você imagina.Recentemente, eu fiz isso e foi surpreendido

Eu apenas mostrei a você por me referindo ao jogo estou a desenvolver - 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');
}

Lá vai:Você acabou de preparar os dados e retorná-lo.A magia é feita pelo Media de classe.Eu não sei se você tiver que adicionar Media.php para Bootstrap.php, apenas experimentá-lo.

Eu acho que a explicação é, que você não tem que fornecer um modo de exibição ou qualquer coisa, porque o Lítio já sabe como presente JSON.Ele também ensina algo que o controlador deve realmente fazer, porque se você fosse escrever um modo de exibição para a mesma ação, seria precisa basicamente os mesmos dados.

Cheers

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top