ریفرر یا ارجاعدهنده، توی وب به صفحهای میگن که یه صفحه دیگه رو درخواست میکنه. برای مثال اگه ازطریق لینکی در صفحه A به صفحه B منتقل بشیم، صفحه A نقش Referer رو در صفحه B داره. از اونجا که این صفحه ازطریق هدرهای HTTP ارسال میشه و براحتی قابل جعل هست، Yii2 از اون برای بازگشت کاربر استفاده نمیکنه. درعوض توی Yii کامپوننت user پارامتری داره به اسم returnUrl که باید اون رو هرزمان میخوایم کاربر رو به یک صفحه بفرستیم، توی همون صفحه مقداردهی کنیم. مثلاً اگه میخوایم کاربر بعد از اینکه توی صفحه فهرست پستها، روی لینک ویرایش پست کلیک کرد و پست رو هم ویرایش کرد، به صفحه پستها برگرده، باید توی اکشن posts/index این کد رو بنویسیم:
حالا توی اکشن edit بعد از ویرایش پست میتونیم این کد رو صدا بزنیم:
و کاربر به آخرین صفحهای که returnUrl رو ست کرده باشه برگردونده میشه.
یکی دیگه از کاربردهای این تکنیک توی سبد خرید هست، وقتی که میخواین از AJAX استفاده نشه. توی صفحه محصول مربوطه returnUrl رو روی همون صفحه ست میکنید و توی اکشن فرضی cart/add بعد از اضافهکردن محصول به سبد خرید، کاربر رو به صفحه قبل برمیگردونید.
Yii::$app->user->returnUrl = Url::to(['posts/index']);
حالا توی اکشن edit بعد از ویرایش پست میتونیم این کد رو صدا بزنیم:
return $this->goBack();
و کاربر به آخرین صفحهای که returnUrl رو ست کرده باشه برگردونده میشه.
یکی دیگه از کاربردهای این تکنیک توی سبد خرید هست، وقتی که میخواین از AJAX استفاده نشه. توی صفحه محصول مربوطه returnUrl رو روی همون صفحه ست میکنید و توی اکشن فرضی cart/add بعد از اضافهکردن محصول به سبد خرید، کاربر رو به صفحه قبل برمیگردونید.