2012-02-15 8 views
2

レイアウトページでCmenu visible fn Yii::app()->user->isAdmin()が正常に動作しないYii::app()->user->isAdmin()他のビューで正しい値を示していますが、レイアウトで。 私のコードは、保護された/ビュー/レイアウト/ main.phpYey :: app() - > user-> isAdmin()がレイアウトページで正しく動作しない

<?php $this->widget('zii.widgets.CMenu',array(
     'items'=>array(
      array('label'=>'Home', 'url'=>array('/site/index'),/*'visible'=>!Yii::app()->user->isGuest*/), 
      array('label'=>'Master','url'=>array('/site/master'),'visible'=>Yii::app()->user->isAdmin()), 
      array('label'=>'Transaction','url'=>array('/site/transaction'),'visible'=>Yii::app()->user->isAdmin()), 
      array('label'=>' Alotted Task','url'=>array('/site/alottedtask'),'visible'=>!Yii::app()->user->isGuest),  
      array('label'=>'Completed Task','url'=>array('/site/completedtask'),'visible'=>!Yii::app()->user->isGuest), 
      array('label'=>'Status Update', 'url'=>array('/site/statusupdate'),'visible'=>Yii::app()->user->isAdmin()), 

      array('label'=>'Login', 'url'=>array('/site/login'), 'visible'=>Yii::app()->user->isGuest), 
      array('label'=>'Logout ('.Yii::app()->user->name.')', 'url'=>array('/site/logout'), 'visible'=>!Yii::app()->user->isGuest) 
     ), 
    )); ?> 

で、それは

Trying to get property of non-object

アップデートのようなエラーを示す:

私のエラーページhttp://localhost/tracktest/index.php

error page

+1

あなたは '非object'エラーのプロパティを取得しようとする上でより多くの詳細を提供するカー?どのプロパティがエラーを引き起こしていますか(isAdmin?name?isGuest?)また、アプリケーションの 'CWebUser'クラスに' isAdmin() 'メソッドを追加しましたか?あなたの質問に 'isAdmin()'メソッドを追加してください。 – thaddeusmt

+0

@thaddeusmt login.ifの後にコードをテストすると、CWebUser.itがisAdmin()を正しく追加しました。私が何を言っているのか理解してくれることを願っています... – jayanthan

答えて

4

だから、これは「非オブジェクト」エラーを投げているコードです:

return intval($user->role) == 1; 

これはPHPは$userオブジェクトのrole属性を取得しようとしたとき、$userは実際のオブジェクトではないことを意味します。コードを見ると、loadUser()が正しく動作していないか、Yii::app()->user->idがユーザーIDを返さないことを意味します。

function isAdmin() { // this should say "public function", btw 
    $testId = Yii::app()->user->id; 
    echo $testId; 
    print_r(User::model()->findByPk($testId)); 
    die(); 
} 

これは、ユーザーIDを取得しているかどうかを確認させてください、そしてユーザーならばという場合:

これをテストするために、私はあなたの関数にこれを追加しますので、いくつかのテスト変数がプリントアウトされます正しくロードされました。

幸運を祈る!

+0

遅れてご返事申し訳ありません。私は数日間うまくいきません... yii :: app() - > user-> id; IDを正しく返す – jayanthan

+0

答えを受け入れませんでしたか?あなたはまだエラーがありますか? – thaddeusmt

+0

はい、エラーがありますので、私のメインページを条件付きで変更しました。 – jayanthan

3

特定のユーザーを確認する場合は、Yii::app()->user->getName()=='username'を使用してください。

+1

私のために働いていました。と比較するために、私はisAdmin()のような上記のいくつかの人々によって提案されているような機能を持っています。 isAdmin()のような名前で関数を実装する代わりに、私のような人がインラインで何かを必要とする場合、この機能は役に立ちます。 –

0

あなたはこれを試すことができます。
array('label' => 'Master', 'url' => array('/site/master'), 'visible' => Yii::app()->user->checkAccess(array('admin')),

関連する問題