Я пытаюсь узнать, является ли пользователь гостем, используя Yii::app()->user->isGuest, но получаю следующее уведомление:
Undefined property: CWebApplication::$user
Видимо пользователь компонента еще не определен в приложении, хотелось бы узнать причину.
Я пытался проверить, доступен ли компонент через
if(isset(Yii::app()->user))
Однако это не удается. Как я могу проверить, является ли пользователь гостем, даже если Yii::app()->user не определен? Должен ли я получать это уведомление при использовании isGuest?
EDIT: я изменил директиву error_reporting на "E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT". Мне нужно было двигаться дальше. Теперь я получил эту фатальную ошибку:
Неустранимая ошибка: вызов функции-члена getId() для необъекта в home/mario/projects/ciudad_wiki/yii/framework/web/auth/CWebUser.php в строке 530
Расположение функции памяти времени нет
- 0,0005 235120 {основной}( ) ../index.php:0
- 0,0207 1548168 CApplication->run() ../index.php:13
- 0,0207 1548352 CWebApplication->processRequest() ../CApplication.php:162
- 0,0235 1725768 CWebApplication->runController() ../CWebApplication.php:135
- 0,0272 2103464 CController->run() ../CWebApplication.php:276
- 0,0279 2145872 CController->runActionWithFilters() ../CController.php:266
- 0,0279 2145984 CController->runAction() ../CController.php:287
- 0,0279 2146128 CInlineAction->runWithParams() ../CController.php:309
- 0,0279 2146688 SiteController->actionIndex() ../CInlineAction.php:50
- 0,0529 3875888 CController->render() ../SiteController.php:33
- 0,0529 3876112 CController->renderPartial() ../CController.php:783
- 0,0532 3877352 CBaseController->renderFile() ../CController.php:870
- 0,0532 3877672 CBaseController->renderInternal() ../CBaseController.php:96
- 0,0539 3918144 требуют (foo_dir/protected/views/site/index.php') ../CBaseController.php:127
- 0,0705 4428584 CModule->__get() ../CBaseController.php:199
- 0,0705 4428584 CModule->getComponent() ../CModule.php:104
- 0,0723 4580360 CWebUser->init() ../CModule.php:388
- 0,0736 4671144 CWebUser->getIsGuest() ../CWebUser.php:195
- 0,0736 4671240 CWebUser->getState() ../CWebUser.php:279
- 0,0736 4671320 CWebUser->getStateKeyPrefix() ../CWebUser.php:557
Трассировка аналогична предыдущей, Yii не может найти ничего в $_SESSION, связанного с пользовательским компонентом.
EDIT #2: я загрузил трассировку с включенным E_NOTICE, вот она: уведомление PHP
EDIT #3: я недавно обновил php до версии 5.4. Когда я запускаю приложение на сервере с php 5.3, проблем нет, возможно, за кулисами есть уведомление, но не фатальная ошибка, которую я получаю с php 5.4. Как писал bool.dev: это полная догадка.
'user'
в массиве'component'
? - person bool.dev   schedule 14.06.2012'user'=>array( 'allowAutoLogin'=>true, 'class' => 'WebUser', ),
- person Mario Marín   schedule 14.06.2012'class'
или изменить его на'class'=>'CWebUser'
, или у вас есть класс, который вы создали сами, с именемWebUser
? - person bool.dev   schedule 14.06.2012Yii::app()->getComponent('session');// this will create session if not yet activated
а затем вызватьYii::app()->user;
или лучше попробовать создать компонентYii::app()->getComponent('user');
- person bool.dev   schedule 14.06.2012Yii::app()->getComponent('session'); <br>echo '<pre>'; var_dump(Yii::app()->getComponent('user')); echo '</pre>';
в views/layout/main.php, но ничего не изменилось. - person Mario Marín   schedule 14.06.2012user
кpreload
. - person Boris Belenski   schedule 15.06.2012