takix
nacizane tavsiyelerimi soyliyim size..
Yazdıgınız homeController store methodu 10 numara fuzuli şeylerle dolu.
1.cisi:
if(Settings::find('active_upload')->value == 0){
toastr()->warning(__('main.new_entries_paused'));
return redirect('/');
}
Bu nedir? burada ne işi var...
Controllera gelmeden bu işi yapabilirsiniz.Laravelde alamayacağınız veri yok...
Yada illa yapcanız her controller Controller.php gibi bomboş bir sınıfla genişletiliyor..Yazın oraya..
her bir haltı Controller a yazmak zorunda değilsiniz...
En net kural : CONTROLLER sınıfları olabildiğince tertemiz olmak zorundalar..
$rules = [
'title' => 'required|string|max:255',
'story' => 'required|string|min:'.Settings::find('minimum_characters')->value.'|max:'.Settings::find('maximum_characters')->value,
'tags' => 'nullable',
'category_id' => 'required',
'genders_id' => 'required',
'age' => 'required',
'photo' => 'nullable|image|mimes:jpeg,png,jpg|max:2048'
];
Sıfır puan...Hiç yazılmayacak yer.
Validationlar controller içinde yazılaaaa--maaaa--zzz...Nokta..yazılır diyenin alnını karıslarım..
Request sınıfı var oraya yazın..Methoda inject edin...
php artisan make:request FooRequest yaparsanız requestler sizin yerinize olusur laravel tarafından...
2.kural..Database kaydı yapıyorsunuz alt tarafı..required kuralını database veriyor size..ben olsam yazarım bir console command bunlarla da ugrasmam...Minimum efor maximum verim...
Bu sekil insaat ameleliğimizden farkımız yok..Aynı şekil çalışan sistemi kurallaştırmayı ve makineye yaptırmayı bilmiyoruz.Yada uğraşmıyoruz...Tavsiyem olabildiğince ama olabildiğince generatorlere yığın sisteminizi..Yazın command heryerde rahat edersiniz.
Validator::make($request->all(), $rules,[
'title.required' => 'Bir Başlık Giriniz.',
'title.max' => 'Başlık 255 Karakterden Uzun Olamaz.',
'story.required' => 'Boş bırakılmamalıdır.',
'story.min' => 'Girilen Metin '.Settings::find('minimum_characters')->value.' Karakterden Fazla Olmalıdır.',
'story.max' => 'Girilen Metin ' .Settings::find('maximum_characters')->value.' Karakterden Az Olmalıdır.',
'category_id.required' => 'Kategori Seçmeniz Gerekiyor.',
'photo.image' => 'Lütfen Resim Dosyası Yükleyiniz.',
'photo.mimes' => 'Dosya Biçimi jpg,png veya jpeg olmalıdır.',
])->validateWithBag('write');
Farkettin mi bilmiyorum ama iğrenç görünüyor.
Clean code kitabını okuyun..Bakarken keyif almadığınız kod kötü koddur..
Bunun burda işi yok..az once bahsettiğim request sınıfı icinde bu tanımlanabilir...
Ve diğer bir kural...Abiler: türkçe yazılım olmaz..
Madem yapacaksınız..dil dosyalarını kullanın...
Static cümle yazmayın..Sonra uğraşırsınız..
Dil dosyalarına yazın..bırakın sonrasını tercumanlar ugraşsın...
// create item
$create_item = Items::create([
'title' => $request->title,
'story' => $string,
'slug' => Str::slug($request->title),
'status' => Settings::find('new_entries')->value,
'user_id' => Auth::id(),
'category_id' => $request->category_id,
'genders_id' => $request->genders_id,
'age' => $request->age,
]);
Yukarda tanımladıgın validationu adam gibi tanımlarsan.. böyle dizi ile create methoduna değer geçmek zorunda kalmazsınız..
Items::create($request->validated());
diyerek kısaltırdım ben bu kodu..
if(Settings::find('new_entries')->value == 1){
toastr()->success(__('main.toast_your_post_has_been_posted'));
return redirect('/');
} else {
toastr()->warning(__('main.toast_post_in_moderation'));
return redirect('/');
}
En nefret ettiğim şey..return yazıyorsanız..Else methoduna neden ihtiyaç duyuyorsunuz anlamak mümkün değil..
if(Settings::find('new_entries')->value == 1){
toastr()->success(__('main.toast_your_post_has_been_posted'));
return redirect('/');
}
toastr()->warning(__('main.toast_post_in_moderation'));
return redirect('/');
daha güzel görünüyor..gereksiz else bloklarından kaçının..if şartı birşey donderecekse..elseye gerek yok...
Sağlıcakla...