[SOLVED] CActiveDataProvider 使用Behavior的问题


$dataProvider=new CActiveDataProvider('Page',array(

    'criteria'=>$criteria,

    'sort'=>array('defaultOrder'=>'id DESC'),

    'pagination'=>array('pageSize'=>20),

));

这样的代码,假如我希望执行一个behavior方法的话,该怎么做?

看了API,虽然可以使用 CActiveDataProvider::setData() 方法来定义数据,但是这样写的话,排序、翻页等,又会变得比较麻烦~

请问有没有好的解决方案?

顶~

继续顶! 顶到 qiang回复~止

三顶~

不是太明白你的问题,你要执行谁的behavior方法?希望怎么执行?

我要执行一下我得多语行为插件方法 multilingual()

如主题,要在获取数据 findAll()调用前,使用 $pageModel->multilingual()

有没有办法呢?

没有很好的办法,你可以override CActiveDataProvider::fetchData().

我觉得如果可以传入$model变量的话,应该就可以解决啊

就是说,如果传入的model是一个CActiveRecord对象的话,就不需要再使用 CActiveRecord::model($className) 这样的方法了,而是直接使用 $model->getAll($criteria),这样的话,你觉得呢?

这个主意不错。你能提交一个ticket么?谢谢。

CActiveDataProvider 增加 getModel() 方法

http://code.google.com/p/yii/issues/detail?id=1284