2010-11-11 94 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