2017-08-14 155 views
0

對不起我的英文,但我想說的是在下面解釋。從yii2獲取請求被重定向到的url?

我有一個控制器說ControllerCard它有一個這樣的動作。

function actionScanCard() 
{ 
    ... 
    $this->redirect('/transaction/redeem'); 
    ... 
} 

在其他控制器,ControllerTransaction,我試圖讓,此番/從/card/scan-card

function actionRedeem() 
{ 
    $redirectFrom = ????; 
    if ($redirectFrom === '/card/scan-card') 
    { 
     // some actions 
    } 
    else 
     throw new ForbiddenHttpException('Must scan card!'); 
} 

我如何獲得這個$redirectFrom值與Yii2重定向?

+0

爲什麼不添加一些會話變量,後來檢查它的存在? – Bizley

+1

...甚至URL查詢參數,例如'/ transaction/redeem?from =%2Fcard%2Fscan-card' – Phil

+0

@Bizley我試過使用會話,但是它很難管理會話(至少對我來說:p )。我試圖保留會話的一些URL像'/ transaction/redeem','/ transaction/redeem-add-details'。但是,會話必須在其他地方銷燬。 –

回答

1

您可以在yii \ helpers \ BaseUrl中使用remember()& previous()方法。

function actionScanCard() 
{ 
    ... 
    \yii\helpers\Url::remember(); 
    $this->redirect('/transaction/redeem'); 
    ... 
} 

在TransactionController(或其他)

function actionRedeem() 
{ 
    $url = \yii\helpers\Url::previous(); 
    if($url === Url::to('card/scan-card')) { 
     // some actions 
    } else{} 
} 
+0

無論如何要「忘記」它嗎? :) –

+0

在這種情況下,您將不得不使用:'\ yii \ helpers \ Url :: remember($ url,$ name);'然後您可以通過以下方式將它忘記:'Yii :: $ app-> getSession ) - >刪除($名);' – Kalu