راکت

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

2 پاسخ

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

ثبت پرسش جدید

پاسخ‌ها

2
سیدعلی موسوی
سیدعلی موسوی
@juza66

تخصص: سی شارپ و پی اچ پی

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

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

رضا
رضا
@reza159753

اینجا باید واسه هر مدل یه بار این داستان ها رو داشته باشی . من میخواستم اتوماتیک این کار روی همه فیلد هام انجام بشه .
البته من خودم با تعریف یه 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);
    }
}

شاید پاسخ شما همین‌جا باشد

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

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