Yii 禁用一个控制器的模型行为

Luc*_*nto 1 php yii

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


模型 - Users.php:

public function behaviors()
{
    return array(
        'datetimeI18NBehavior'=>array(
            'class' => 'ext.DateTimeI18NBehavior',
        ),
    );
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过以下方式禁用它:

$model->disableBehavior('datetimeI18NBehavior');
Run Code Online (Sandbox Code Playgroud)

但是如何禁用整个控制器?

rin*_*.io 5

不确定,但也许这会奏效:

class ApiController extends CController
{
    function init()
    {
        Users::model()->disableBehavior('datetimeI18NBehavior');
    }
}
Run Code Online (Sandbox Code Playgroud)

或者您可以尝试在模型中添加一些逻辑:

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

尽管在我看来,这两种方式都不完美。