پارسا
3 سال پیش توسط پارسا مطرح شد
1 پاسخ

کد های تکراری در متد های CRUD در کنترلر های restfull api

با سلام خدمت دوستان
من با استفاده از لاراول دارم پروژه restful می نویسم.
اما موضوعی که وجود داره اینه که در بعضی از متد ها ی کنترلر مثل create و update یکسری از کد های duplicate هستند
می خواستم ببینم راهی وحود داره که مثلا متد create و update رو یکی کنیم و یه متد به اسم createOrUpdate بنویسیم ؟
اصلا این داستان اصولی هستش یا خیر؟
اینم بگم که دارم از repository pattern استفاده می کنم


ثبت پرسش جدید
حسین شیری نژاد
تخصص : programmer
@hosseinshirinegad98 3 سال پیش آپدیت شد
0

سلام میشه دوتا متد رو یکی کرد ولی چه اشکالی داره که این دو از هم جدا باشن فکرم نکنم کدهاش شبیه به هم باشن چون در یکی داره ساخته میشه در یکی دیگه ادیت میشه و این چیز مهمی نیست و پیشنهاد لاراول هم جدا بودن این دو متد هست اگه مثلا کارها ساده باشه مثل نمایش یه ویو اونوقت میشه متدهارو یکی کرد

Route::match(['post', 'patch'], 'users/create-or-update/{user?}', function (CreateOrUpdateUserRequest $request, User $user = null) {
        if ($request->isMethod('post')) {
            User::create($request->all());
        } else {
            $user->update($request->all());
        }
});

//کلاس اعتبار سنجی کردن
class CreateOrUpdateUserRequest extends Request 
{
    public function rules()
    {
        if ($this->isMethod('post')) {
            return [
                'name' => 'required',
                'email' => 'required|email|unique:users'
            ];
        } else {
            return  [
                'name' => 'required',
                'email' => ['required',  Rule::unique('users', 'email')->ignore($this->user)]
            ];
        }
    }
}

یه اعتبار سنجی ساده هم قرار داده شده تا با نحوه اون هم آشنا بشید
و علامت ؟ جلوی پارامتر user به معنی این است که این پارامتر میتونه اختیاری باشه


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام