我继承了一个用自定义(小)php框架编写的中型网站。我想切换到yii框架,但首先我需要为以下问题找到解决方案:该网站基本上是一系列可用多种语言提供的课程和练习。事实上,所有内容都有多种语言版本。
用户可以选择他们的首选语言,并从数据库中检索本地化内容。
数据库组织:
如何轻松地将其与“Post :: model() - > findAll()”yii从数据库中检索数据的方式集成?
我应该编写我的自定义派生类CModel,它将从IUserIdentity类中检索语言首选项并调整查询吗? 是否有一些我可以看到的代码?
答案 0 :(得分:1)
我应该编写我的自定义派生类CModel,它将从IUserIdentity类中检索语言首选项并调整查询吗?
我不认为,你需要那样做。有不同的方式:
1)。 您可以在创建对象实例之后和运行findAll之前使用cdbcriteria设置条件(例如where子句) http://www.yiiframework.com/doc/guide/1.1/en/database.ar(请查看页面第2季末)
2)。 另一种方法是覆盖模型中的findAll:
public function findAll($condition='',$params=array())
{ $condition["criteria"]->compare ....
return parent::findAll($condition,$params);
}
3)。 你也可以使用onBeforFind触发器http://www.yiiframework.com/doc/api/1.1/CActiveRecord#onBeforeFind-detail,它在findAll搜索之前(每次)触发
我更喜欢第一或第二个想法。