2011-05-05 55 views
1

我已經繼承了用自定義(小)php框架編寫的中型網站。我想切換到yii框架,但首先我需要爲以下問題找到解決方案:該網站基本上是一系列可用多種語言提供的課程和練習。實際上所有的內容都可以使用多種語言。Yii框架和多語言內容

在使用者可以選擇他們的優選語言和本地化內容從數據庫中檢索。

數據庫組織:

  • 通過ID和無語言列的表演習exerciseId,sLanguage和sContent
  • 表exercises_strings

怎麼可以這樣很容易與「後集成: :model() - > findAll()「yii從數據庫中檢索數據的方式?

我應該寫我的自定義派生類CModel的會從IUserIdentity類檢索語言偏好,適應查詢? 是否有一些我可以看的代碼?

回答

1

我應該編寫自定義派生類的CModel,它將從IUserIdentity類中檢索語言首選項並調整查詢嗎?

我不認爲,你需要做的。有不同的方式:

1) 可以使用cdbcriteria設置標準(例如where子句)創建對象的實例後和運行的findAll http://www.yiiframework.com/doc/guide/1.1/en/database.ar前(看第二個結束頁面的四分之一)

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,這觸發BEF礦(每)中的findAll搜索

,我寧願第一或第二的想法。

+0

因此,使用relationnal活動記錄,我會用'郵政::模型() - >與( 'PostStrings') - >的findAll()'和'PostStrings' I類可以覆蓋'findAll'自動加載正確的翻譯。 – 2011-05-05 16:05:33