0

在 Yii 中,我试图在导航菜单中创建指向您自己的个人资料的链接。此链接由数据库中您的名字和姓氏组成,并且仅对登录的成员可见。我可以在登录时设置这些罚款。但是我不知道如何在 Yii 中更正的问题是当非登录成员查看页面时会发生什么。

因为目前它只是错误并抛出:

未定义属性“CWebUser.first_name”。

这就是我的菜单的设置方式

array(
        'class' => 'bootstrap.widgets.TbButtonGroup',
        'htmlOptions'=>array('class'=>'pull-right'),
        'size'=>'small',
        'type'=>'primary', // '', 'primary', 'info', 'success', 'warning', 'danger' or 'inverse'
        'buttons'=>array(
           array('visible'=> !Yii::app()->user->isGuest, 'label'=>Yii::app()->user->first_name .' '. Yii::app()->user->last_name, 'items'=>array(
           array('label'=>'Profile', 'url'=>array('/site/logout')),
           array('label'=>'Settings', 'url'=>array('/site/something')),
           '---',
           array('label'=>'Logout', 'url'=>array('/site/somethingElse')),
        )))
    ),

我理解它出错的原因,但不知道如何在 Yii 中纠正这个错误。如果有人能指出我正确的方向,那就太好了。

谢谢

强尼

4

2 回答 2

1

这使得代码有点难看,但你可以把这个三元运算符放在“标签”中

!Yii::app()->user->isGuest ? Yii::app()->user->first_name .' '. Yii::app()->user->last_name : '';

基本上是这样的

boolean_stateent ? if_true_then_this_value : else_use_this_value;

所以它检查用户是否不是访客(也就是登录),然后打印名字+姓氏。如果用户是访客,则无需尝试访问 first_name 和 last_name,因此不会抛出错误。

于 2013-04-26T05:19:56.663 回答
1

您可以使用您的自定义WebUser类(如果您还没有:只需扩展它CWebUser并将其配置为您的user组件)。然后您可以使用 getter 作为用户名:

public function getFullName()
{
    return $this->getIsGuest() ? '' : $this->first_name.' '.$this->last_name;
}

然后在您的菜单中使用Yii::app()->user->fullName. 对于来宾用户,它将为空。

于 2013-04-26T11:07:17.333 回答