سلام خدمت همه دوستان
من میخوام تو لاراول تو یه قسمتی یه کدی تعریف کنم که قبل از هر ثبت رکوردی یا هر اپدیتی تک تک فیلد ها برسی شود و یه سری فیلتر روی ان اعمال گردد
به صورت مثال میخوام قبل از ثبت رکورد هر جا (ی - ک ) عربی بود اون رو به فارسی تبدیل کنم یا هر جا عدد فارسی کاربر ثبت کرده بود به اعداد انگلیسی تبدیل بشه .
نمیخوام خودم این کار رو داخل کنترلر هام انجام بدم .
راهی هست برای این کار ؟
در مدل مربوطه شما میتونی از Mutators و Accessors استفاده کنی. یکی قبل از خواندن فیلد یکی بعد از ذخیره یا اپدیت فیلد مورد نظرت
میتونی اینجا بیشتر درباره ش بخونی
https://laravel.com/docs/6.x/eloquent-mutators
اینجا باید واسه هر مدل یه بار این داستان ها رو داشته باشی . من میخواستم اتوماتیک این کار روی همه فیلد هام انجام بشه .
البته من خودم با تعریف یه 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);
}
}
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟