限时 5折! 详情
自定义behavior绑定controller 无法调用行为类的公共方法
3 63 2017-12-14

自定义行为

class MyBehavior extends ActionFilter    
{                                        
    private $_prop2;                     
    public  $pro1;                       
    protected $c;                        

    public function getProp2()           
    {                                    
        return $this->_prop2;            
    }                                    

    public function setProp2($value)     
    {                                    
        $this->_prop2 = $value;          
    }                                    

    public function beforeAction($action)
    {                                    
        var_dump(111);                   
        return true;                     
    }                                    

    public function isGuest()            
    {                                    
        return Yii::$app->user->isGuest; 
    }   
}   

控制器

public function behaviors()
{
        return [
                'myBehavior'=> MyBehavior::className(),
                'verbs'=>[
                        'class'=>VerbFilter::className(),
                        'actions'=>[
                                'delete' => ['POST'],
                        ],
                ]
        ];
}

beforeaciton 方法的确可以被调用,但是行为下的公共方法无法被调用

  • 3 个回答
  • 不知道你是怎么调用的,像下面这样调用肯定没有问题。

    在控制器的操作方法中调用过滤器的getName方法

    $this->getName();

  • 就是$this->行为类下的公共方法 的确调用不了显示找不到这个方法

  • 群内调试后发现,你犯了一个非常基本的错误,方法的调用用 $this->isGuest(),而不是 $this->isGuest

登录 去赚佣金