zcyxm 2012-06-12 11:29:12 2821次浏览 7条回复 0 0 0

看到以前的blog demo 里面使用小物件有这么用的 <?php $this->widget('UserLogin',array('visible'=>Yii::app()->user->isGuest)); ?> 但是我使用的时候提示:属性 "UserLogin.visible" 未被定义.

这个blog demo貌似是很久前的。是不是被弃用了?:Q

  • 回复于 2012-06-12 14:05 举报

    路径对吗?

  • 回复于 2012-06-12 14:10 举报

    应该是和路径没关系的。因为我去掉 array('visible'=>Yii::app()->user->isGuest)后正常。

    很奇怪的是我改了下UserLogin里面的代码,加了个 public $visible = true; 就可以了。但是不知所以然。

    <?php
    Yii::import('zii.widgets.CPortlet');
    class UserLogin extends CPortlet
    {
        public $title='Login';
        public $visible = true;
    
        protected function renderContent()
        {
            if ($this->visible){
                $form = new LoginForm() ;
                if (isset($_POST['ajax']) && $_POST['ajax']==='login-form'){
                    echo CActiveForm::validate($form);
                    Yii::app()->end();
                }
                if (isset($_POST['LoginForm'])){
                    $form->attributes = $_POST['LoginForm'];
                    if($form->validate() && $form->login()){
                        $this->controller->refresh();
                    }	
                }
                $this->render('userLogin',array('form'=>$form));
            }
        }
    }
    
  • 回复于 2012-06-12 14:13 举报

    对了,我就是看的你昨天给我的那个demo.....感激...

    不过我比较菜,目前那个demo在我电脑上依然跑不起来。。。

  • 回复于 2012-06-12 15:23 举报

    因为没有 public $visible = true; 这个属性导致的错误。

  • 回复于 2012-06-12 15:23 举报

    那个demo好像是针对1.0版本的。

  • 回复于 2012-06-12 16:31 举报

    3L的代码中的
    public $visible = true;
    和下面的 if($this->visible){}
    是我自己加的....加了后显示正常...但是我不知所以然....不知道为什么要加,不知道为什么加了就可以...仁兄知道原因么?给我讲讲。。thx

  • 回复于 2012-06-12 17:59 举报

    这个widget里的visible就是调用UserLogin里面的visible属性。既然visible属性没定义,当然找不到了,肯定会报错的。

您需要登录后才可以回复。登录 | 立即注册