|string> */ public function rules(): array { $rules = [ 'media_name' => ['required', 'max:100'], 'theme' => ['required', 'max:100'], 'title' => ['required'], 'link' => ['nullable', 'url'], 'news_page' => ['nullable'], 'writter' => ['required', 'max:100'], 'channel' => ['required', 'in:website,tiktok,youtube,instagram,facebook,twitter,cetak'], 'content' => ['required'], 'influencer' => ['nullable', 'max:100'], 'keyword' => ['required', 'max:100'], 'quote' => ['nullable'], 'release_date' => ['required', 'date'], 'enhancer_id' => ['required'], ]; if ($this->isMethod('post')) { $rules['image'] = ['required', 'image', 'mimes:png,jpg,jpeg', 'max:2048']; } elseif ($this->isMethod('put')) { $rules['image'] = ['nullable', 'image', 'mimes:png,jpg,jpeg', 'max:2048']; } return $rules; } protected function prepareForValidation() { $this->merge([ 'link' => filled($this->link) ? $this->link : null, 'influencer' => filled($this->influencer) ? $this->influencer : null, 'quote' => filled($this->quote) ? $this->quote : null, 'enhancer_id' => Auth::check() ? Auth::id() : null, ]); } public function messages() { return [ 'media_name.required' => 'Nama media wajib diisi.', 'media_name.max' => 'Nama media tidak boleh lebih dari 100 karakter.', 'theme.required' => 'Tema wajib diisi.', 'theme.max' => 'Tema tidak boleh lebih dari 100 karakter.', 'title.required' => 'Judul wajib diisi.', 'link.url' => 'Link harus berupa URL yang valid.', 'writter.required' => 'Nama penulis wajib diisi.', 'writter.max' => 'Nama penulis tidak boleh lebih dari 100 karakter.', 'channel.required' => 'Channel wajib dipilih.', 'channel.in' => 'Channel yang dipilih tidak valid. Pilih salah satu dari: website, tiktok, youtube, instagram, facebook, twitter, atau cetak.', 'content.required' => 'Konten wajib diisi.', 'influencer.max' => 'Nama influencer tidak boleh lebih dari 100 karakter.', 'keyword.required' => 'Keyword wajib diisi.', 'keyword.max' => 'Keyword tidak boleh lebih dari 100 karakter.', 'release_date.required' => 'Tanggal rilis wajib diisi.', 'release_date.date' => 'Tanggal rilis harus dalam format tanggal yang valid.', 'image.required' => 'Gambar wajib diunggah.', 'image.image' => 'File yang diunggah harus berupa gambar.', 'image.mimes' => 'Gambar hanya boleh berformat PNG, JPG, atau JPEG.', 'image.max' => 'Ukuran gambar tidak boleh lebih dari 2MB.', ]; } }