techblog/app/Data/PostData.php
PeterChrz 75561faf25
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
initialize project and update gitignore
2026-03-19 09:35:42 -04:00

69 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.'),
];
}
}