70 lines
2 KiB
PHP
70 lines
2 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace App\Data;
|
||
|
|
|
||
|
|
use Illuminate\Support\Carbon;
|
||
|
|
use Livewire\Wireable;
|
||
|
|
use Spatie\LaravelData\Concerns\WireableData;
|
||
|
|
use Spatie\LaravelData\Data;
|
||
|
|
|
||
|
|
class PostData extends Data implements Wireable
|
||
|
|
{
|
||
|
|
use WireableData;
|
||
|
|
|
||
|
|
public function __construct(
|
||
|
|
public ?int $id,
|
||
|
|
public string $title,
|
||
|
|
public string $slug,
|
||
|
|
public string $content,
|
||
|
|
public string $excerpt,
|
||
|
|
public string $status,
|
||
|
|
public ?Carbon $published_at,
|
||
|
|
public ?int $author_id,
|
||
|
|
public ?int $category_id,
|
||
|
|
public ?array $tags,
|
||
|
|
) {
|
||
|
|
}
|
||
|
|
|
||
|
|
public static function blank(): self
|
||
|
|
{
|
||
|
|
return PostData::from([
|
||
|
|
'title' => '',
|
||
|
|
'slug' => '',
|
||
|
|
'content' => '',
|
||
|
|
'excerpt' => '',
|
||
|
|
'status' => 'draft',
|
||
|
|
'published_at' => null,
|
||
|
|
'author_id' => null,
|
||
|
|
'category_id' => null,
|
||
|
|
'tags' => [],
|
||
|
|
]);
|
||
|
|
}
|
||
|
|
|
||
|
|
public static function rules(): array
|
||
|
|
{
|
||
|
|
return [
|
||
|
|
'title' => ['required'],
|
||
|
|
'slug' => ['required'],
|
||
|
|
'content' => ['required'],
|
||
|
|
'excerpt' => ['required'],
|
||
|
|
'status' => ['required'],
|
||
|
|
'published_at' => ['nullable'],
|
||
|
|
'author_id' => ['required'],
|
||
|
|
'category_id' => ['required'],
|
||
|
|
];
|
||
|
|
}
|
||
|
|
|
||
|
|
public static function messages(): array
|
||
|
|
{
|
||
|
|
return [
|
||
|
|
'title.required' => __('The title field is required.'),
|
||
|
|
'slug.required' => __('The slug field is required.'),
|
||
|
|
'content.required' => __('The content field is required.'),
|
||
|
|
'excerpt.required' => __('The excerpt field is required.'),
|
||
|
|
'status.required' => __('The status field is required.'),
|
||
|
|
'author_id.required' => __('The author field is required.'),
|
||
|
|
'category_id.required' => __('The category field is required.'),
|
||
|
|
];
|
||
|
|
}
|
||
|
|
}
|