2012-12-16 161 views

回答

1

這樣做會修改控制器基類(保護/組件/ Controller.php這樣)的最佳方式。您可以添加init()功能,這將獲得每個控制器調用執行,是這樣的:

public function init(){ 
    if(!isset($_SESSION['mysession'])){ 
     this->redirect("site/login"); 
    } 
} 

您可以通過訪問當前控制器:

Yii::app()->controller->id 

但你不能在init函數訪問行動(通常你可以使用Yii::app()->controller->action->id)。要做到這一點,最簡單的方法可能是檢查類的網址:

if ($_SERVER['REQUEST_URI'] == "/site/login"){ 
    // it's the login page 
} 

您可能必須在比較之前編輯$_SERVER['REQUEST_URI'],如果你在你的本地主機在子文件夾中的工作,是這樣的:

$url = str_replace("/mysubfloder","",$_SERVER['REQUEST_URI']); 

然後再比較一下。也可能最好檢查字符串中的index.php

我假設你正在使用它來使某些頁面無法訪問未登錄的用戶?如果是這種情況,你真的應該使用accessRulesRead more about that here

+0

感謝您的回覆。你的假設是對的。我想只爲非登錄用戶提供訪問權限。讓我看看訪問規則 –

+0

沒問題阿克巴:)這是一個相當不錯的指南 - http://www.yiiframework.com/wiki/191/implementing-a-user-level-access-system/ –

+0

至於現在我還沒有使用太多的框架類。我用一些Yii框架類使用純PHP。如果我使用Yii框架類太多,它會對Jquery的東西產生不利影響,這些東西我想在視圖中執行。假設我使用'$ form-> textfield()'爲html'輸入文本'我可以使用jquery操作那個元素嗎? –

相關問題