2010-11-11 93 views
1

我有一個應用CakePHP完成,並且我已經在數據庫上完成了,遵循cakephp書上的說明。問題是,在索引視圖的表格中,我無法對翻譯的字段進行排序。該字段實際上並不存在於數據庫中,所以這裏是我認爲問題出現的地方,但我可以在該字段上插入數據,以便i18n正常工作。cakephp paginator排序字段與i18n

我試過幾種設置paginator的方法,但都沒有工作。

舉例來說,我已經試過:

Paginator->sort('Name','name'); 
Paginator->sort('Name','I18n__name'); 
Paginator->sort('Name','I18n__name.content'); 

依我之見,對查詢,它獲取字段指的是作爲I18n__name.content」,所以我想這會工作,但它不「T。

有什麼建議嗎?

回答

1

我終於找到它了。我認爲這應該在cakephp中起作用。但是,直到他們添加這個,有一種方法可以使它工作。

在paginatro使用形式:

Paginator->sort('Name','I18n__name.content'); 

,然後需要做的唯一事情就是添加的功能模型。

function hasField($fieldName) { 
    if (parent::hasField($fieldName)) 
     return true; 
    else 
     switch ($fieldName) { 
      case "content": 
       return true; 
      default: 
       return false; 
     } 
    return false; 
} 

就是這樣,現在翻譯的字段可以在分頁表中排序。

0

我通常使用類似

echo $this->Paginator->sort('Name', __('Content', true)); 

,然後讓如有必要__()函數呈現一個翻譯名稱。或者我誤解了這個問題?

乾杯 阿諾

+0

使用__()是用於靜態字段,所以翻譯必須在po文件。我使用翻譯行爲,所以每當我在數據庫中添加一個新實體時,我都可以提供翻譯。所以翻譯實際上存儲在數據庫中。 – 1000i1 2010-11-16 21:34:59