use App\Rules\CanBeAuthor;
use Carbon\Carbon;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Str;
class PostsRequest extends FormRequest
{
public function authorize()
{
return true;
}
protected function prepareForValidation(): void
{
$this->merge([
'slug' => Str::slug($this->input('title'))
]);
$this->merge([
'posted_at' => Carbon::parse($this->input('posted_at'))
]);
}
public function rules(): array
{
return [
'title' => 'required',
'content' => 'required',
'posted_at' => 'required|date',
'thumbnail_id' => 'nullable|exists:media,id',
'author_id' => ['required', 'exists:users,id', new CanBeAuthor],
'slug' => 'unique:posts,slug,' . (optional($this->post)->id ?: 'NULL'),
];
}
}