yalcin Yaptığınızda hatalı bir şey yok.
Ben sadece kodu kısaltmış oldum;
Önce resim upload işlemini hallediyoruz.
Zaten sizin validation içerisindeki alanlardan birinde hata olursa, kod aşağı satıra ulaşmadan 422 hatası ile dönüş yapacak.
$image içerisinde $validated['image'] şeklinde ayırmanıza gerek yok.
image alanınız zaten validation içerisinde var, doğrulamadan geçmiş olan veri gelecek burada.
$image=$request->file('image')->store('brand','public');
Brand::create([
$request->validated() + $image
]
);
Yukarıda, create içerisine upload işleminden sonraki $image değişkenini göndermek istediğim için, exclude kullandım. Bu sayede $request->validated() içerisinde 'image' yer almıyor.
Ancak validation uygulanıyor. Form Request içerisinde şu şekilde kullanmanız yeterli;
'image' => 'required|max:2048|mimes:jpeg,png,jpg|exclude'
Ayrıca mimes ile tip belirtiyorsanız, image kuralına gerek yok.
Slug kısmını da, Form Request sınıfı içerisindeki prepareForValidation metodunda halledebilirsiniz.
use Illuminate\Support\Str;
/**
* Prepare the data for validation.
*/
protected function prepareForValidation(): void
{
$this->merge([
'slug' => Str::slug($this->slug),
]);
}
Artık $request->validated() içerisinde Str::slug'dan geçmiş olan slug değeriniz var. Ayrıca ikinci paremetrede -(tire işareti) kullanmanıza gerek yok, o zaten var sayılan değer.
Uzun lafın kısası yapınızda hatalı bir şey yok. Ben sadece Brand::create() kısmında içerisinde tek tek key-value uğraşmayın diye kısaltmış oldum.