Yii禁用一个Controller的模型行为

时间:2012-12-21 20:55:47

标签: php yii

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


模型 - Users.php:

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

我知道我可以禁用它:

$model->disableBehavior('datetimeI18NBehavior');

但如何禁用整个Controller?

1 个答案:

答案 0 :(得分:4)

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

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

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

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

在我看来,这两种方式并不完美。