رضا
5 سال پیش توسط رضا مطرح شد
2 پاسخ

اعمال یک سری تغییرات قبل از ثبت یا اپدیت رکورد

سلام خدمت همه دوستان
من میخوام تو لاراول تو یه قسمتی یه کدی تعریف کنم که قبل از هر ثبت رکوردی یا هر اپدیتی تک تک فیلد ها برسی شود و یه سری فیلتر روی ان اعمال گردد
به صورت مثال میخوام قبل از ثبت رکورد هر جا (ی - ک ) عربی بود اون رو به فارسی تبدیل کنم یا هر جا عدد فارسی کاربر ثبت کرده بود به اعداد انگلیسی تبدیل بشه .
نمیخوام خودم این کار رو داخل کنترلر هام انجام بدم .
راهی هست برای این کار ؟


ثبت پرسش جدید
سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 5 سال پیش آپدیت شد
0

در مدل مربوطه شما میتونی از Mutators و Accessors استفاده کنی. یکی قبل از خواندن فیلد یکی بعد از ذخیره یا اپدیت فیلد مورد نظرت

میتونی اینجا بیشتر درباره ش بخونی
https://laravel.com/docs/6.x/eloquent-mutators


رضا
@reza159753 5 سال پیش مطرح شد
0

اینجا باید واسه هر مدل یه بار این داستان ها رو داشته باشی . من میخواستم اتوماتیک این کار روی همه فیلد هام انجام بشه .
البته من خودم با تعریف یه middleware این کار و انجام دادم . الان همه جا داره درست کار میکنه

کدش رو میزارم دوستان شاید به دردشون بخوره .

<?php

namespace App\Http\Middleware;

use Closure;

class ConvertArabic2Persian
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */

    public function handle($request, Closure $next)
    {
        $temp = [] ;
        if ( isset($request->request) ){

            foreach ($request->request as $key => $value){
                $temp[$key] = $this->arabicToPersian($value);
            }
            $request->merge($temp);
        }
        return $next($request);
    }
}

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

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