Yii禁用一个Controller的模型行为

Yii禁用一个Controller的模型行为

问题描述:

Im using a behavior(DateTimeI18NBehavior) in Users.php model, but specifically in a controller (ApiController.php) I would like to disable it.


Model - Users.php:

public function behaviors()
{
    return array(
        'datetimeI18NBehavior'=>array(
            'class' => 'ext.DateTimeI18NBehavior',
        ),
    );
}

I know that I can it disable with:

$model->disableBehavior('datetimeI18NBehavior');

But how to disable to entire Controller?

我在Users.php模型中使用行为(DateTimeI18NBehavior),但特别是在控制器(ApiController.php)中 想要禁用它。 p>


模型 - Users.php: p>

 公共功能行为()\  n {
返回数组(
'datetimeI18NBehavior'=>数组(
'类'=>'ext.DateTimeI18NBehavior',
),
); 
} 
  code>   pre> 
 
 

我知道我可以禁用它: p>

  $ model-> disableBehavior('datetimeI18NBehavior')  ; 
  code>  pre> 
 
 

但如何禁用整个控制器? p> div>

Not sure, but maybe this would work:

class ApiController extends CController
{
    function init()
    {
        Users::model()->disableBehavior('datetimeI18NBehavior');
    }
}

Or you can try to add some logic in your model:

function behaviors()
{
    if (Yii::app()->controller->uniqueId != 'api') {
        return parent::behaviors();
    }
    return array(
        'datetimeI18NBehavior'=>array(
            'class' => 'ext.DateTimeI18NBehavior',
        ),
    );
}

Both ways aren't perfect though in my opinion.