В моем приложении Yii 1.x я определил новый модуль Admin
. В init
способе admin
модуля я определил новый 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, и используется yep Yii :: app() -> setComponents() и должен работать. – MrD
@ Mr.M Ах, извините, я не очень тщательно использовал '$ this', я скопировал ваш код и установил второй параметр)) –
Я буду тестировать и сообщим вам, если он работает, Конечно, это будет! – MrD