getFlash مشکل

[font="Tahoma"][rtl]

با سلام در yii2 یک مشکل با getFlash دارم

وقتی سشن رو می گیریم این نتیجه رو دارم

var_dump($_SESSION); in view I get this:

[/rtl][/font]




array (size=5)

 '__flash' =>

array (size=1)

 'message' => int 1

 '__returnUrl' => string '/appraisal/form/index?year=2015' (length=31)

 'user.fullname' => string 'Saeed Gholizadeh' (length=16)

 '__id' => int 1

 'message' =>

   array (size=3)

     'type' => string 'success' (length=7)

     'message' => string 'Your Appraisal Saved Successfully.' (length=34)

     'title' => string 'Appraisal Saved' (length=15)



[font="Tahoma"][rtl]

اما وقتی getFlash رو استفاده می کنم

var_dump(Yii::$app->session->getFlash(‘message’));

var_dump($_SESSION);

I get this as a result:

[/rtl][/font]




null






array (size=4)

 '__flash' =>

array (size=0)

 empty

 '__returnUrl' => string '/appraisal/form/index?year=2015' (length=31)

 'user.fullname' => string 'Saeed Gholizadeh' (length=16)

 '__id' => int 1



[font="Tahoma"][rtl]

یعنی از getFlash که استفاده می کنم بدون اینکه message رو بهم برگردونه از سشن حذف می کنه

البته وقتی تو کنترلر دامپ میکنم تو خط یک بر میگردونه

وقتی میره تو view وقتی دامپ میشه نال برمی گردونه

مشکل در خط 659 تو فایل session.php تو شاخه web هست که این تابع قرار داره

[/rtl][/font]




$_SESSION[$this->flashParam] = $counters



[font="Tahoma"][rtl]

اینجا اتفاق عجیبی میفته

قبل اینکه بیاد تو این خط یه شرط وجود داره

[/rtl][/font]




$counters = $this->get($this->flashParam, [])

if (isset($counters[$key]))



[font="Tahoma"][rtl]

اینجا برای counters مقدار نال بر میگرده

ولی وقتی داخل شرط خط مورد نظر رو کامنت می کنم اینجا مقدار درست بر میگرده

سر در نمیارم چطور تغییر یه مقداری داخل شرط روی خود شرط اثر میگذاره انگار دستورات داخل شرط زدتر از خود شرط اجرا شدن

[/rtl][/font]

[right][size="4"]در داکیومنت یی2 این را توضیح داده

setFlash()

بعد از اولین درخواست دسترسی پیغام فلش پاک میشه.[/size][/right]

[font="Tahoma"][rtl]

میدونم عزیزم

خوب تو تابعش داره همین کارو میکنه کلا 10 خطه دیگه داکیومنت هم نمی خواست

سوالم رو بد مطرح کردم

مثلما من قسمت مربوط به پاک کردن سشن رو وقتی کامنت می کنم این کار میکنه

یعنی تابع داره دوبار اجرا میشه

من یه ست فلش نوشتم و درست بعدش ریدایرکت کردم و فقط تو قسمت ویو اومدم getFlash رو صدا زدم

اگر همین یه بار صدا زده شه مقدار رو بر میگردونه و نال می کنه

وقتی نال هستش یعنی قبلا یکی صدا زده این تابع رو مقدارش برگشته و نال شده

من همونطور که بالا توضیح دادم وقتی سشن رو دامپ می کنم نشون میده تو سشن ست شده مقدار

وقتی تابع رو صدا میزنم مقداری بر نمی گرده و سشن رو هم که بعدش دامپ می کنم ایبار خالی هست

یعنی من یک بار تابع رو صدا می زنم ولی داره دوبار صدا زده می شه

این فقط در یک صورت امکان پذیره

یا صفحه رفرش شه که نمی شه

یا ویو دوبار رندر شه به هر دلیلی و این کد دوبار اجرا شه

[/rtl][/font]

[font="Tahoma"][rtl]

حل شد:

تو این اکشن اشتباها redirect رو return نکرده بودم بنابراین بعد از render کردن view کار redirect انجام می شد

یا نهایتا باید یه چیزی return میکردم

[/rtl][/font]