Перейти к основному содержимому
Версия: 1.x

← Предыдущая · Назад к README · Следующая →

Поддерживаемые форматы

  • xml — генерирует фиды в формате XML.
  • json — генерирует фиды в формате JSON.
  • jsonl — генерирует фиды в формате JSON Lines.
  • csv — генерирует фиды в формате CSV.
  • rss — генерирует фиды в формате RSS Atom.

По умолчанию используется формат xml.

Параметры конвертера для отдельного фида​

Добавьте DragonCode\LaravelFeed\Attributes\Config к классу фида, чтобы переопределить настройки его конвертера:

use App\Models\User;
use DragonCode\LaravelFeed\Attributes\Config;
use DragonCode\LaravelFeed\Enums\FeedFormatEnum;
use DragonCode\LaravelFeed\Feeds\Feed;
use Illuminate\Database\Eloquent\Builder;

#[Config('delimiter', ',')]
#[Config('enclosure', "'")]
#[Config('lineEnding', "\r\n")]
class UserFeed extends Feed
{
protected FeedFormatEnum $format = FeedFormatEnum::Csv;

public function builder(): Builder
{
return User::query();
}
}

Повторяйте атрибут для каждой настройки. Если имя повторяется в одном классе, используется последний объявленный атрибут.

Имена настроек соответствуют именам параметров конструктора конвертера. Только переданные значения переопределяют конфигурацию приложения; остальные настройки сохраняют настроенные значения. lineEnding соответствует feeds.converters.csv.line_ending.

ФорматПоддерживаемые ключи
csvdelimiter, enclosure, escape, lineEnding
jsonoptions, pretty
jsonloptions
xml, rsspretty

Параметры родительского фида наследуются, а дочерние ключи переопределяют родительские. Используйте только ключи, которые поддерживает выбранный формат; неподдерживаемые ключи вызывают InvalidArgumentException. Атрибут не меняет конфигурацию приложения или другие фиды.

JSON Lines всегда записывает один элемент на строку, а JSON_PRETTY_PRINT удаляется из options. Пользовательские привязки контейнера должны учитывать переданные параметры конструктора.

Пользовательский DragonCode\LaravelFeed\Helpers\ConverterHelper, который переопределяет get() или resolve(), должен также переопределить защищённый метод resolveWithOptions(FeedFormatEnum $format, array $options = []): Converter, чтобы использовать параметры отдельного фида. Передайте $options в Container::make(), чтобы настройки применялись до инициализации конвертера. Иначе разрешение конвертера для фида с параметрами вызывает LogicException; фиды без параметров сохраняют прежнее поведение вспомогательного класса.

Смотрите также​