در این مقاله قصد داریم نحوه استفاده از session یکبار مصرف و دلیل استفاده از آن را بررسی کنیم. 

همانطور که می دانید توسط session می توان اطلاعاتی را در سرور دخیره کرد و در قسمت های مختلف پروژه مورد نظر از آن استفاده کرد. مهمترین کاربردهای session برای ورود و خروج کاربر و سبد خرید می باشد. گاهی اوقات پیش میاید که شما می خواهید یکبار پیامی را به کاربر نمایش دهید و بعد از رفرش شدن صفحه آن پیام پاک شود. session یکبار مصرف در اینجا به کار ما میاید که کاربرد بسیار زیادی در پروژه های ما دارد. لاراول متدهایی برای ایجاد session یکبار مصرف دارد که در ادامه با مثال بررسی خواهیم کرد.

فرض کنید در زمانی که مدیر سایت در پنل مدیریت قصد تغییرات در مقاله ای را داشته باشد، می خواهید یک پیام جهت موفقیت آمیز بودن عملیات به او نشان دهید. در این صورت می توانید از کد زیر استفاده کنید

  return redirect()->route("routeName")->with("successEdit",true); 

همانطور که مشاهده می کنید در کد بالا زمانی قصد دارید کاربر را بعد از انجام عملیاتی به یک Route بفرستید می توانید توسط متد with یک session یکبار مصرف ایجاد کنید. متد with دو ورودی از میگیرد که اولی کلیدsession می باشد و دومی مقدار آن است. سپس اگر کدتان را اجرا کنید، session برای ما ساخته می شود. حال سوال پیش میاید که چگونه می توانید آ نرا به کاربر نشان دهید. به کد زیر توجه کنید.

 

@if(session('successEdit'))
   ویرایش با موفقیت انجام شد
@endif 

همانطور که مشاهده می کنید در فایل های Blade خود در قسمت view می توانید با یک شرط بررسی کنید که اگر session با کلید مورد نظر وجود داشته باشد ،یک پیغام در صفحه چاپ کنید. قطعا در تمام پروژه ها شما با پایگاه داده کار خواهید کرد و نیاز دارید تا این پیغام ها را به کاربران نمایش دهید. اصولی ترین راه ممکن این است که یک folder به نام partials در قسمت view خود ایجاد کرده و فایلی به نام notification.blade.php ایجاد کنید و در آن شرط های مختلف را بررسی کنید و پیغام های خود را چاپ کنید. سپس در هر قسمت دلخواه از view خود که می خواهید آن را include کنید. در این صورت اگر تغییراتی انجام شود و session ها set شوند، پیغام های شما یک بار به کاربر نمایش داده می شوند. 

محتویات پیشنهادی فایل notifications.blade.php:


@if(session('successInsert'))
   اطلاعات با موفقیت ثبت شد
@endif
@if(session('successDelete'))
   حذف با موفقیت انجام شد
@endif
@if(session('successEdit'))
   ویرایش با موفقیت انجام شد
@endif

اگر سوالی داشتید میتونید کامنت بزارید. موفق باشید