在我的Yii 1.x應用程序中,我定義了新的Admin
模塊。在admin
模塊的init
方法我定義的新user
成分是這樣的:如何在Yii框架中爲不同模塊創建不同的登錄名
$this->setComponents(array(
'user'=>array(
'class' => 'CWebUser',
// enable cookie-based authentication
'allowAutoLogin'=>true,
'baseUrl'=>Yii::app()->createUrl("admin/user/login"),
'stateKeyPrefix' => '_admin',
),
));
現在,我希望我能做到以下幾點:
Yii::app()->getModule("admin")->user->login($this->_identity,$duration)
或
Yii::app()->getModule("admin")->user->logout();
但不管用。
當我打印我的模塊(var_dump(Yii::app()>getModule("admin"))
),我可以看到user
組件未定義。
object(AdminModule)[14]
public 'defaultController' => string 'default' (length=7)
public 'layout' => null
public 'controllerNamespace' => null
public 'controllerMap' =>
array (size=0)
empty
private '_controllerPath' (CWebModule) => null
private '_viewPath' (CWebModule) => null
private '_layoutPath' (CWebModule) => null
public 'preload' =>
array (size=0)
empty
public 'behaviors' =>
array (size=0)
empty
private '_id' (CModule) => string 'admin' (length=10)
private '_parentModule' (CModule) => null
private '_basePath' (CModule) => string '/srv/www/htdocs/public/project/application/protected/modules/admin' (length=71)
private '_modulePath' (CModule) => null
private '_params' (CModule) => null
private '_modules' (CModule) =>
array (size=0)
empty
private '_moduleConfig' (CModule) =>
array (size=0)
empty
private '_components' (CModule) =>
array (size=0)
empty
private '_componentConfig' (CModule) =>
array (size=1)
'user' =>
array (size=4)
'class' => string 'CWebUser' (length=8)
'allowAutoLogin' => boolean true
'baseUrl' => string '/project/application/index.php/admin/user/login' (length=52)
'stateKeyPrefix' => string '_admin' (length=11)
private '_e' (CComponent) => null
private '_m' (CComponent) => null
啊哈,不同的是,在第一個版本中,您調用了$ this-> setComponents,並且在這個Yii :: app() - > setComponents()中。我已經檢查過它是如何在Gii模塊中完成的,並且是使用Yii :: app() - > setComponents()並且應該工作。 – MrD
@ Mr.M 啊,對不起,我沒有仔細的使用'$ this',我複製了你的代碼並設置了第二個參數)) –
我會測試並且會讓你知道它是否工作,我肯定會的! – MrD