استفاده از flashdata برای پیام های موقت در codeigniter 4

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

این کار به راحتی در codeigniter 4 مقدور می باشد و کل فرآیند توسط session مدیریت می شود. به عبارتی توسط session یک پیام به طور موقت ایجاد شده و در session ذخیره می شود و بعد از یک بار رفرش، کلا حذف می شود. فرض را بر این میگذاریم که شما controller و view مورد نظر را ساخته و می خواهید یک پیام موقت را در view نمایش دهید.

در بخش controller از طریق دستورات زیر ابتدا پیام مورد نظر را با استفاده از دستور setFlashdata ذخیره می کنیم.

            session()->setFlashdata('success','درخواست انجام شد.');

نام پیام مورد نظر را success می گذاریم که البته به هر نام دیگری قابل تغییر است. سپس طبیعتا یک ریدایرکت به صفحه مورد نظر ایجاد میکنیم. مثلا به یک controller دیگر. من در کد زیر به صحه اصلی وب سایت ریدایرکت کردم.

            return redirect()->to('/');

وقتی که به صفحه مورد نظر (view) هدایت شد می توانید با استفاده از دستور زیر پیام مورد نظر را فراخوانی کنید.

<?php echo session()->getFlashdata('success'); ?>

تا این مرحله کار تمام است و پیام برای کاربر نمایش داده می شود. ولی پیشنهاد می کنم با استفاده از bootstrap شکل ظاهری پیام را تغییر داده و استایل مناسبی به آن بدهید. می توانید از نمونه کد زیر استفاده کنید.

        <?php if (session()->getFlashdata('success')) : ?>
            <div class="alert alert-success alert-dismissible fade show" role="alert">
                <?php echo session()->getFlashdata('success'); ?>
                <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
            </div>
        <?php endif; ?>

دیدگاهتان را بنویسید