Paket ini menyediakan pembungkus Fraktal yang bagus dan mudah untuk digunakan dalam aplikasi Laravel Anda. Jika Anda belum tahu apa fungsi Fraktal, intip intronya. Singkatnya, Fraktal sangat berguna untuk mengubah data sebelum digunakan dalam API.
Menggunakan data Fraktal dapat diubah seperti ini:
gunakan LeagueFractalManager;gunakan LeagueFractalResourceCollection;$buku = [ ['id' => 1, 'title' => 'Hogfather', 'karakter' => [...]], ['id' => 2, 'title' => 'Game Bunuh Semua Orang', 'karakter' => [...]] ];$manager = Manajer baru();$resource = Koleksi baru($buku, BookTransformer baru());$manager->parseIncludes('karakter');$manager->createData($resource)->toArray() ;
Paket ini membuat proses itu sedikit lebih mudah:
fraktal() ->koleksi($buku) ->transformWith(BookTransformer baru()) -> sertakan Karakter () ->keArray();
Pecinta fasad akan senang mengetahui bahwa fasad disediakan:
Fraktal::koleksi($buku)->transformWith(new BookTransformer())->toArray();
Ada juga sintaks yang sangat singkat yang tersedia untuk mengubah data dengan cepat:
fraktal($buku, BookTransformer baru())->toArray();
Anda juga dapat bertransformasi langsung dari koleksi Laravel:
kumpulkan($buku)->transformWith(New BookTransformer());
Transformasi langsung dari koleksi Laravel sangat berguna untuk hasil Eloquent:
Pengguna::all()->transformWith(new UserTransformer())->toArray();
Spatie adalah agen desain web yang berbasis di Antwerp, Belgia. Anda akan menemukan ikhtisar semua proyek sumber terbuka kami di situs web kami.
Kami menginvestasikan banyak sumber daya untuk menciptakan paket sumber terbuka terbaik di kelasnya. Anda dapat mendukung kami dengan membeli salah satu produk berbayar kami.
Kami sangat menghargai Anda mengirimi kami kartu pos dari kota asal Anda, yang menyebutkan paket kami mana yang Anda gunakan. Anda akan menemukan alamat kami di halaman kontak kami. Kami mempublikasikan semua kartu pos yang diterima di dinding kartu pos virtual kami.
Anda dapat menarik paket melalui composer:
komposer membutuhkan spatie/laravel-fraktal
Paket akan otomatis mendaftar sendiri.
Jika Anda ingin mengubah serializer default, paginator default, atau kelas fraktal default SpatieFractalFractal
Anda harus mempublikasikan file konfigurasi:
vendor tukang php:publish --provider="SpatieFractalFractalServiceProvider"
Jika Anda mengupgrade ke Laravel 5.5, file konfigurasi yang ada harus diganti namanya dari laravel-fractal.php menjadi fractal.php
Ini adalah isi file yang dipublikasikan:
return [/* * Serializer default yang akan digunakan saat melakukan transformasi. Ini * mungkin dibiarkan kosong untuk menggunakan yang default Fraktal. Ini bisa berupa string * atau subkelas LeagueFractalSerializerSerializerAbstract. */'default_serializer' => '',/* Paginator default yang digunakan saat melakukan transformasi. Ini * mungkin dibiarkan kosong untuk menggunakan yang default Fraktal. Ini bisa berupa string * atau subkelas LeagueFractalPaginatorPaginatorInterface. */'default_paginator' => '',/* * LeagueFractalSerializerJsonApiSerializer akan menggunakan nilai ini * sebagai awalan untuk tautan yang dihasilkan. Setel ke `null` untuk menonaktifkan ini. */'base_url' => null,/* * Jika Anda ingin mengganti atau memperluas instance default SpatieFractalFractal * berikan nama kelas yang ingin Anda gunakan. */'fractal_class' => SpatieFractalFractal::class,'auto_includes' => [/* * Jika diaktifkan, Fraktal akan secara otomatis menambahkan nama * yang ada di parameter permintaan `include`. */'enabled' => true,/* * Nama kunci dalam permintaan di mana kita harus mencari penyertaannya. */'request_key' => 'sertakan', ],'auto_excludes' => [/* * Jika diaktifkan, Fraktal akan secara otomatis menambahkan nama * yang tidak termasuk dalam parameter permintaan `exclude`. */'enabled' => true,/* * Nama kunci dalam permintaan di mana kita harus mencari pengecualian yang akan dikecualikan. */'request_key' => 'tidak termasuk', ],'auto_fieldsets' => [/* * Jika diaktifkan, Fraktal akan secara otomatis menambahkan kumpulan bidang yang *namanya ada di parameter permintaan `bidang`. */'enabled' => true,/* * Nama kunci dalam permintaan, tempat kita harus mencari kumpulan bidang yang akan diurai. */'request_key' => 'bidang', ], ];
Lihat dokumentasi spatie/fractalistic
untuk mempelajari semua metode yang disediakan paket ini.
Dalam semua contoh kode, Anda dapat menggunakan fractal()
alih-alih Fractal::create()
.
Untuk mengembalikan respons dengan data json, Anda dapat melakukannya di aplikasi Laravel.
$buku = fraktal($buku, BookTransformer baru())->toArray();respon balik()->json($buku);
Metode respond()
pada kelas Fraktal dapat membuat proses ini sedikit lebih efisien.
return fractal($books, new BookTransformer())->respond();
Anda dapat meneruskan kode respons sebagai parameter pertama dan opsional beberapa header sebagai parameter kedua
return fractal($books, new BookTransformer())->respond(403, ['a-header' => 'a value','another-header' => 'another-header' => 'nilai lain', ]);
Anda dapat meneruskan opsi pengkodean json sebagai parameter ketiga:
return fractal($books, new BookTransformer())->respond(200, [], JSON_PRETTY_PRINT);
Anda juga dapat mengatur kode status dan header menggunakan callback:
gunakan IlluminateHttpJsonResponse;return fractal($books, new BookTransformer())->respond(function(JsonResponse $response) {$response->setStatusCode(403) ->header('a-header', 'sebuah nilai') ->withHeaders(['another-header' => 'nilai lain','yet-another-header' => 'nilai lain', ]); });
Anda dapat menambahkan metode ke kelas Fraktal menggunakan sifat Macroable Laravel. Bayangkan Anda ingin menambahkan beberapa statistik ke metadata permintaan Anda, Anda dapat melakukannya tanpa mengacaukan kode Anda:
gunakan SpatieFractalFraktal; Fraktal::macro('stats', function ($stats) {// ubah statistik yang diteruskan seperlunya di sinireturn $this->addMeta(['stats' => $stats]); });fractal($books, new BookTransformer())->stats(['runtime' => 100])->respond();
Anda dapat menjalankan perintah make:transformer
untuk membuat trafo tiruan dengan cepat. Secara default akan disimpan di direktori appTransformers
.
Ganti nama file konfigurasi Anda dari laravel-fractal
menjadi fractal
v3
diperkenalkan untuk menukar league/fractal
dengan spatie/fractalistic
. Dukungan untuk Lumen dibatalkan. Anda seharusnya dapat mengupgrade aplikasi Laravel dari v2
ke v3
tanpa perubahan kode apa pun.
Dalam kebanyakan kasus, Anda dapat meningkatkan ke v2
tanpa melakukan atau hanya melakukan sedikit perubahan pada kode Anda:
resourceName
telah diubah namanya menjadi withResourceName
.
Alasan utama mengapa v2
paket ini diberi tag adalah karena v0.14 dari Fraktal yang mendasari oleh Liga berisi perubahan yang dapat menyebabkan gangguan. Jika Anda menggunakan LeagueFractalSerializerJsonApiSerializer
di v2, kunci links
akan berisi self
, first
, next
dan last
.
Silakan lihat CHANGELOG untuk informasi lebih lanjut tentang apa yang berubah baru-baru ini.
$ tes komposer
Silakan lihat KONTRIBUSI untuk rinciannya.
Jika Anda menemukan bug terkait keamanan, silakan kirim email ke [email protected] alih-alih menggunakan pelacak masalah.
Freek Van der Herten
Semua kontributor
Lisensi MIT (MIT). Silakan lihat File Lisensi untuk informasi lebih lanjut.