Перайсці да асноўнага змесціва
Версія: 1.x

← Папярэдняя · Назад да README · Наступная →

Стварэнне стужак

нататка

Найзручней ствараць патрэбныя класы з дапамогай плагіна Laravel Idea для PhpStorm.

Laravel IdeaLaravel Idea

Каб стварыць клас стужкі, выкарыстоўвайце кансольную каманду make:feed:

php artisan make:feed <name>

Каманда створыць файл стужкі, напрыклад app/Feeds/UserFeed.php.

Гэта кансольная каманда таксама можа стварыць разам з класам стужкі класы элемента і звестак. Для гэтага выкарыстоўвайце параметры --item і --info.

# Create a feed class and info class
php artisan make:feed <name> --info

# Create a feed class and item class
php artisan make:feed <name> --item

# Create a feed class, item class, and info class
php artisan make:feed <name> --item --info

Таксама даступныя скарочаныя параметры:

# Create a feed class and item class
php artisan make:feed <name> -t

# Create a feed class and info class
php artisan make:feed <name> -i

# Create a feed class, item class, and info class
php artisan make:feed <name> -it
нататка

Пры стварэнні стужкі таксама будзе створана аперацыя або міграцыя для яе дадання ў базу даных.

Калі праект выкарыстоўвае Laravel Deploy Operations, будзе створаны клас аперацыі. У іншым выпадку будзе створаны клас міграцыі.

Гэта патрэбна для дадання звестак пра стужку ў базу даных і кіравання імі.

Запаўненне стужак​

Стужка​

Запоўніце асноўны клас стужкі. Напрыклад:

namespace App\Feeds;

use App\Feeds\Items\UserFeedItem;
use App\Models\User;
use DragonCode\LaravelFeed\Feeds\Feed;
use DragonCode\LaravelFeed\Feeds\Items\FeedItem;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;

class UserFeed extends Feed
{
public function builder(): Builder
{
return User::query()
->whereNotNull('email_verified_at')
->where('created_at', '>', now()->subYear());
}

public function item(Model $model): FeedItem
{
return new UserFeedItem($model);
}
}

Элемент стужкі​

Запоўніце клас элемента стужкі. Напрыклад:

namespace App\Feeds\Items;

use DragonCode\LaravelFeed\Feeds\Items\FeedItem;

/** @property-read \App\Models\User $model */
class UserFeedItem extends FeedItem
{
public function toArray(): array
{
return [
'name' => $this->model->name,
'email' => $this->model->email,
];
}
}
Неабавязковыя значэнні​

Каб прапусціць поле, калі яго значэнне недаступнае, вярніце для яго асобнік DragonCode\LaravelFeed\Data\OptionalData:

namespace App\Feeds\Items;

use DragonCode\LaravelFeed\Data\OptionalData;
use DragonCode\LaravelFeed\Feeds\Items\FeedItem;

class UserFeedItem extends FeedItem
{
public function toArray(): array
{
return [
'id' => $this->model->id,
'name' => $this->model->name,

'cityId' => $this->model->city?->id ?? new OptionalData,

'createdAt' => $this->model->created_at,
'updatedAt' => $this->model->updated_at ?? new OptionalData,
];
}
}

Неабавязковыя палі выдаляюцца з аб'ектаў JSON і JSON Lines, а таксама з элементаў XML і RSS, у тым ліку са звычайных укладзеных палёў. CSV захоўвае пазіцыю слупка і запісвае пустое поле.

Калі праграма выкарыстоўвае Spatie Laravel Data, замест гэтага можна вярнуць Spatie\LaravelData\Optional. Абодва класы неабавязковых значэнняў апрацоўваюцца аўтаматычна.

use Spatie\LaravelData\Optional;

'updatedAt' => $this->model->updated_at ?? Optional::create(),

Асобныя выходныя файлы​

Генерацыя асобных файлаў для розных бізнес-умоў — гэта пашыраны сцэнарый вываду. Прачытайце кіраўніцтва па асобных выходных файлах, а затым скарыстайцеся рэцэптам некалькіх мэтавых файлаў стужкі як поўным прыкладам.

Фармат файла​

парада

Спіс даступных фарматаў знаходзіцца на старонцы падтрыманых фарматаў.

Стужкі можна генераваць у розных фарматах. Клас стужкі можна правільна экспартаваць толькі ў той фармат, для якога ён прызначаны. Гэта звязана з выкарыстаннем дырэктыў і іншымі асаблівасцямі фармату.

Каб задаць патрэбны фармат, проста перавызначце ў класе стужкі ўласцівасць $format:

namespace App\Feeds;

use DragonCode\LaravelFeed\Enums\FeedFormatEnum;
use DragonCode\LaravelFeed\Feeds\Feed;
use Illuminate\Database\Eloquent\Builder;

class UserFeed extends Feed
{
protected FeedFormatEnum $format = FeedFormatEnum::Json;

public function builder(): Builder
{
//
}
}

Глядзіце таксама​