Пакет представляет собой красивую и простую оболочку Fractal для использования в ваших приложениях Laravel. Если вы не знаете, что делает Fractal, взгляните на их вступление. Короче говоря, Fractal очень полезен для преобразования данных перед их использованием в API.
Используя фрактальные данные, можно преобразовать следующим образом:
используйте LeagueFractalManager; используйте LeagueFractalResourceCollection; $books = [ ['id' => 1, 'title' => 'Отец Свиней', 'персонажи' => [...]], ['id' => 2, 'title' => 'Игра убей всех', 'characters' => [...]] ];$manager = новый Manager();$resource = новая коллекция($books, новый BookTransformer());$manager->parseIncludes('characters');$manager->createData($resource)->toArray() ;
Этот пакет немного упрощает этот процесс:
фрактал() ->коллекция($книги) ->transformWith(новый BookTransformer()) ->includeCharacters() ->ToArray();
Любители фасадов будут рады узнать, что фасад предусмотрен:
Fractal::collection($books)->transformWith(new BookTransformer())->toArray();
Также доступен очень короткий синтаксис для быстрого преобразования данных:
fractal($books, new BookTransformer())->toArray();
Вы также можете преобразовать непосредственно из коллекции Laravel:
Collect($books)->transformWith(new BookTransformer());
Преобразование прямо из коллекции Laravel особенно полезно для результатов Eloquent:
Пользователи::all()->transformWith(new UserTransformer())->toArray();
Spatie — агентство веб-дизайна, базирующееся в Антверпене, Бельгия. На нашем сайте вы найдете обзор всех наших проектов с открытым исходным кодом.
Мы вкладываем много ресурсов в создание лучших в своем классе пакетов с открытым исходным кодом. Вы можете поддержать нас, купив один из наших платных продуктов.
Мы очень признательны вам за отправку нам открытки из вашего родного города с указанием того, какой из наших пакетов вы используете. Наш адрес вы найдете на странице контактов. Все полученные открытки мы публикуем на нашей виртуальной стене открыток.
Вы можете загрузить пакет через композитор:
композитору требуется Spatie/Laravel-Fractal
Пакет автоматически зарегистрируется.
Если вы хотите изменить сериализатор по умолчанию, пагинатор по умолчанию или фрактальный класс по умолчанию SpatieFractalFractal
вам необходимо опубликовать файл конфигурации:
поставщик php artisan:publish --provider="SpatieFractalFractalServiceProvider"
Если вы обновляетесь до Laravel 5.5, существующий файл конфигурации следует переименовать из laravel-fractal.php в fractal.php.
Вот содержимое опубликованного файла:
return [/* * Сериализатор по умолчанию, который будет использоваться при выполнении преобразования. Его * можно оставить пустым, чтобы использовать значение Fractal по умолчанию. Это может быть строка * или подкласс LeagueFractalSerializerSerializerAbstract. */'default_serializer' => '',/* Разбивка на страницы по умолчанию, которая будет использоваться при выполнении преобразования. Его * можно оставить пустым, чтобы использовать значение Fractal по умолчанию. Это может быть строка * или подкласс LeagueFractalPaginatorPaginatorInterface. */'default_paginator' => '',/* * LeagueFractalSerializerJsonApiSerializer будет использовать это значение * в качестве префикса для создаваемых ссылок. Установите значение null, чтобы отключить это. */'base_url' => null,/* * Если вы хотите переопределить или расширить экземпляр SpatieFractalFractal по умолчанию, * укажите имя класса, который вы хотите использовать. */'fractal_class' => SpatieFractalFractal::class,'auto_includes' => [/* * Если включено, Fractal автоматически добавит включения, * имена которых присутствуют в параметре запроса `include`. */'enabled' => true,/* * Имя ключа в запросе, где мы должны искать включения для включения. */'request_key' => 'включить', ],'auto_excludes' => [/* * Если включено, Fractal автоматически добавит исключения, * чьи имена присутствуют в параметре запроса `exclude`. */'enabled' => true,/* * Имя ключа в запросе, где мы должны искать исключения для исключения. */'request_key' => 'исключить', ],'auto_fieldsets' => [/* * Если включено, Fractal автоматически добавит наборы полей, * имена которых присутствуют в параметре запроса `fields`. */'enabled' => true,/* * Имя ключа в запросе, где мы должны искать наборы полей для анализа. */'request_key' => 'поля', ], ];
Обратитесь к документации spatie/fractalistic
чтобы узнать обо всех методах, предоставляемых этим пакетом.
Во всех примерах кода вы можете использовать fractal()
вместо Fractal::create()
.
Чтобы вернуть ответ с данными json, вы можете сделать это в приложении Laravel.
$books = fractal($books, new BookTransformer())->toArray(); return response()->json($books);
Метод respond()
класса Fractal может сделать этот процесс немного более рациональным.
return fractal($books, new BookTransformer())->respond();
Вы можете передать код ответа в качестве первого параметра и, при необходимости, некоторые заголовки в качестве второго.
return fractal($books, new BookTransformer())->respond(403, ['a-header' => 'значение','another-header' => 'другое значение', ]);
Вы можете передать параметры кодировки json в качестве третьего параметра:
return fractal($books, new BookTransformer())->respond(200, [], JSON_PRETTY_PRINT);
Вы также можете установить код состояния и заголовки, используя обратный вызов:
используйте IlluminateHttpJsonResponse; return fractal($books, new BookTransformer())->respond(function(JsonResponse $response) {$response->setStatusCode(403) ->header('заголовок', 'значение') ->withHeaders(['another-header' => 'еще одно значение','et-another-header' => 'еще одно значение', ]); });
Вы можете добавлять методы в класс Fractal, используя особенность Laravel Macroable. Представьте, что вы хотите добавить некоторую статистику к метаданным вашего запроса. Вы можете сделать это, не загромождая код:
используйте SpatieFractalFractal; Fractal::macro('stats', function ($stats) {// преобразуем переданную статистику по мере необходимости здесь return $this->addMeta(['stats' => $stats]); }); fractal($books, new BookTransformer())->stats(['runtime' => 100])->respond();
Вы можете запустить команду make:transformer
чтобы быстро создать фиктивный трансформатор. По умолчанию он будет храниться в каталоге appTransformers
.
Переименуйте файл конфигурации из laravel-fractal
во fractal
v3
была представлена для замены league/fractal
на spatie/fractalistic
. Поддержка Lumen была прекращена. Вы сможете обновить приложение Laravel с v2
до v3
без каких-либо изменений кода.
В большинстве случаев вы можете просто перейти на v2
не внося никаких изменений или внося лишь незначительные изменения в свой код:
resourceName
было переименовано в withResourceName
.
Основная причина, по которой была помечена v2
этого пакета, заключается в том, что версия 0.14 базового Fractal от League содержит критические изменения. Если вы используете LeagueFractalSerializerJsonApiSerializer
в версии 2, ключ links
будет содержать self
, first
, next
и last
.
Пожалуйста, посетите CHANGELOG для получения дополнительной информации о том, что изменилось за последнее время.
$ тест композитора
Пожалуйста, смотрите ВКЛАД для получения подробной информации.
Если вы обнаружили ошибку, связанную с безопасностью, отправьте электронное письмо по адресу [email protected] вместо использования системы отслеживания проблем.
Фрик Ван дер Хертен
Все участники
Лицензия MIT (MIT). Пожалуйста, смотрите файл лицензии для получения дополнительной информации.