codanux // veya UserRequestStore ve UserRequestUpdate diye iki ayrı formRequest açıp üsteki gibi tetikleyebilirsin
bu @mgsmus 'un da önerdiği yöntem, ona da sorduğum gibi; 1 metota 2 form request enjekte edilirse hangisinin doğrulama yapacağı nasıl kontrol edilebilir ki? ha **new** StoreRequest
ile örnek alıp update ve create metotlarını kullan diyorsan, amenna. 2 form requestten 1ini enjekte edip doğrulama yapabilir ve ikincisinin örneğini oluşturup metodunu kullanabilirim. ama fikir alışverişlerimizden (yada verişin mi demeliydim :p) sonra aşağıdaki hali ile sona erdirmeye karar verdim, itiraz ya da ekin yok ise? 🙂
baya faydalı oldu benim açımdan, kısa şık 1 metod, 1 form request içerisinde koşullara dayalı kurallar ile benim içime sindi açıkcası, tekrar çok teşekkürler.
class UserController extends Controller
{
public function store(UserRequest $request)
{
// id kontrolü update veya create tespiti içindi, aşağıdaki metot ile buna gerek kalmadı
User::updateOrCreate(
['id' => $request->id],
$request->filled('password') ?
$request->all() : $request->except('password')
);
}
}
class UserRequest extends FormRequest
{
public function rules()
{
if ($this->filled('id')) {
// nullable ile şifre kabül etmenin olasılığını bile düşünmemişim :)
return [
'name' => 'sometimes|required|string',
'email' => 'sometimes|required|unique:users,email,' . $this->id,
'password' => 'nullable|min:6|confirmed', // boş şifreyi kabul edip içeride ayıklamak mantıklı
];
} else {
// kayıt işleminde tüm alanlar zorunlu
return [
'name' => 'required|string',
'email' => 'required|unique:users,email',
'password' => 'required|min:6|confirmed',
];
}
}
}
ben sevdim böyle, sık sık gelirim :p