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.