O pacote fornece um wrapper agradável e fácil em torno do Fractal para uso em suas aplicações Laravel. Se você não sabe o que o Fractal faz, dê uma olhada na introdução. Resumidamente, Fractal é muito útil para transformar dados antes de usá-los em uma API.
O uso de dados Fractal pode ser transformado assim:
usar LeagueFractalManager; usar LeagueFractalResourceCollection;$books = [ ['id' => 1, 'título' => 'Hogfather', 'personagens' => [...]], ['id' => 2, 'title' => 'Game Of Kill Everyone', 'personagens' => [...]] ];$manager = new Manager();$resource = new Collection($books, new BookTransformer());$manager->parseIncludes('characters');$manager->createData($resource)->toArray() ;
Este pacote torna esse processo um pouco mais fácil:
fractal() ->coleção($livros) ->transformWith(novo BookTransformer()) ->incluirCaracteres() ->toArray();
Os amantes de fachadas ficarão felizes em saber que é fornecida uma fachada:
Fractal::collection($books)->transformWith(new BookTransformer())->toArray();
Há também uma sintaxe muito curta disponível para transformar dados rapidamente:
fractal($livros, new BookTransformer())->toArray();
Você também pode transformar diretamente de uma coleção do Laravel:
coletar($livros)->transformWith(new BookTransformer());
Transformar diretamente de uma coleção do Laravel é particularmente útil para resultados do Eloquent:
Usuários::all()->transformWith(new UserTransformer())->toArray();
Spatie é uma agência de webdesign com sede em Antuérpia, Bélgica. Você encontrará uma visão geral de todos os nossos projetos de código aberto em nosso site.
Investimos muitos recursos na criação dos melhores pacotes de código aberto. Você pode nos apoiar comprando um de nossos produtos pagos.
Agradecemos muito que você nos envie um cartão postal de sua cidade natal, mencionando qual(is) de nossos pacotes você está usando. Você encontrará nosso endereço em nossa página de contato. Publicamos todos os cartões postais recebidos em nosso mural virtual de cartões postais.
Você pode obter o pacote via compositor:
compositor requer spatie/laravel-fractal
O pacote será registrado automaticamente.
Se você deseja alterar o serializador padrão, o paginador padrão ou a classe fractal padrão SpatieFractalFractal
você deve publicar o arquivo de configuração:
fornecedor de artesão php:publish --provider="SpatieFractalFractalServiceProvider"
Se você estiver atualizando para o Laravel 5.5, o arquivo de configuração existente deve ser renomeado de laravel-fractal.php para fractal.php
Este é o conteúdo do arquivo publicado:
return [/* * O serializador padrão a ser usado ao realizar uma transformação. * pode ser deixado em branco para usar o padrão do Fractal. Pode ser uma string * ou uma subclasse LeagueFractalSerializerSerializerAbstract. */'default_serializer' => '',/* O paginador padrão a ser usado ao realizar uma transformação. * pode ser deixado em branco para usar o padrão do Fractal. Pode ser uma string * ou uma subclasse LeagueFractalPaginatorPaginatorInterface. */'default_paginator' => '',/* * LeagueFractalSerializerJsonApiSerializer usará este valor * como prefixo para links gerados. Defina como `null` para desativar isso. */'base_url' => null,/* * Se você deseja substituir ou estender a instância SpatieFractalFractal * padrão, forneça o nome da classe que deseja usar. */'fractal_class' => SpatieFractalFractal::class,'auto_includes' => [/* * Se ativado, o Fractal adicionará automaticamente as inclusões cujos * nomes estão presentes no parâmetro de solicitação `include`. */'enabled' => true,/* * O nome da chave na solicitação onde devemos procurar os include a serem incluídos. */'request_key' => 'incluir', ],'auto_excludes' => [/* * Se ativado, o Fractal adicionará automaticamente os nomes excluídos * que estão presentes no parâmetro de solicitação `exclude`. */'enabled' => true,/* * O nome da chave na solicitação onde devemos procurar as exclusões a serem excluídas. */'request_key' => 'excluir', ],'auto_fieldsets' => [/* * Se ativado, o Fractal adicionará automaticamente os conjuntos de campos cujos * nomes estão presentes no parâmetro de solicitação `fields`. */'enabled' => true,/* * O nome da chave na solicitação, onde devemos procurar os conjuntos de campos para analisar. */'request_key' => 'campos', ], ];
Consulte a documentação do spatie/fractalistic
para aprender todos os métodos que este pacote fornece.
Em todos os exemplos de código você pode usar fractal()
em vez de Fractal::create()
.
Para retornar uma resposta com dados JSON você pode fazer isso em um aplicativo Laravel.
$livros = fractal($livros, new BookTransformer())->toArray();return resposta()->json($livros);
O método respond()
na classe Fractal pode tornar esse processo um pouco mais simplificado.
return fractal($livros, new BookTransformer())->responder();
Você pode passar um código de resposta como primeiro parâmetro e opcionalmente alguns cabeçalhos como segundo
return fractal($books, new BookTransformer())->respond(403, ['a-header' => 'a value','another-header' => 'outro valor', ]);
Você pode passar opções de codificação json como terceiro parâmetro:
return fractal($livros, new BookTransformer())->respond(200, [], JSON_PRETTY_PRINT);
Você também pode definir o código de status e os cabeçalhos usando um retorno de chamada:
use IlluminateHttpJsonResponse;return fractal($books, new BookTransformer())->respond(function(JsonResponse $response) {$response->setStatusCode(403) ->cabeçalho('um-cabeçalho', 'um valor') ->withHeaders(['another-header' => 'outro valor','yet-another-header' => 'mais um valor', ]); });
Você pode adicionar métodos à classe Fractal usando o traço Macroable do Laravel. Imagine que você deseja adicionar algumas estatísticas aos metadados da sua solicitação, você pode fazer isso sem sobrecarregar o seu código:
usar SpatieFractalFractal; Fractal::macro('stats', function ($stats) {// transforma as estatísticas passadas conforme necessário aquireturn $this->addMeta(['stats' => $stats]); });fractal($livros, new BookTransformer())->stats(['runtime' => 100])->respond();
Você pode executar o comando make:transformer
para gerar rapidamente um transformador fictício. Por padrão, ele será armazenado no diretório appTransformers
.
Renomeie seu arquivo de configuração de laravel-fractal
para fractal
v3
foi introduzida para trocar league/fractal
por spatie/fractalistic
. O suporte para Lumen foi abandonado. Você deve ser capaz de atualizar um aplicativo Laravel da v2
para v3
sem nenhuma alteração no código.
Na maioria dos casos, você pode simplesmente atualizar para v2
sem fazer nenhuma ou apenas pequenas alterações em seu código:
resourceName
foi renomeado para withResourceName
.
A principal razão pela qual v2
deste pacote foi marcada é porque a v0.14 do Fractal subjacente da Liga contém alterações significativas. Se você usar LeagueFractalSerializerJsonApiSerializer
na v2, a chave links
conterá self
, first
, next
e last
.
Consulte CHANGELOG para obter mais informações sobre o que mudou recentemente.
$ teste do compositor
Consulte CONTRIBUINDO para obter detalhes.
Se você encontrou um bug relacionado à segurança, envie um email para [email protected] em vez de usar o rastreador de problemas.
Freek Van der Herten
Todos os colaboradores
A licença MIT (MIT). Consulte Arquivo de licença para obter mais informações.