我們有網頁$this->goHome(),如果會話超時或用戶注銷,用戶將被重定向到。我們必須銷毀所有會話,所以我們必須添加一個銷毀會話的函式。這個函式應該在 Yii2 中運行任何動作/控制器之前執行,即類似于 codeigniter 中的鉤子。我們嘗試了破壞會話的輔助函式,我們HomeHelper::getHelpDocUrlForCurrentPage();在main.php布局中呼叫了該函式,但是布局將在控制器中運行動作后執行,它應該可以運行任何控制器,因為我們有 100 多個控制器。如何實作這一點,請以正確的方式建議我們。提前致謝。
uj5u.com熱心網友回復:
在
config/main.php
你可以嘗試使用“on beforeAction”
return [
'vendorPath' => dirname(dirname(__DIR__)) . '/vendor',
'bootstrap' => [
'log',
....
],
'on beforeAction' => function($event){
// your code ..
} ,
'modules' => [
....
],
...
];
uj5u.com熱心網友回復:
雖然@ScaisEdge 解決方案可以作業,但我相信應用程式配置不是保存應用程式邏輯的合適位置。
您應該使用過濾器來實作您想要的結果。
首先,您需要使用您的邏輯實作過濾器。例如像這樣:
namespace app\components\filters;
class MyFilter extends yii\base\ActionFilter
{
public function beforeAction() {
// ... your logic ...
// beforeAction method should return bool value.
// If returned value is false the action is not run
return true;
}
}
然后您想將此過濾器作為任何其他行為附加到您要應用此過濾器的任何控制器。或者,如果您想將過濾器應用于每個動作/控制器,您可以將過濾器附加到應用程式。您可以在應用程式配置中執行此操作:
return [
'as myFilter1' => \app\components\filters\MyFilter::class,
// ... other configurations ...
];
如果其中一些可以幫助您,您還可以查看現有的核心過濾器。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/365163.html
