我已经完成了使用cakephp的应用程序,并且我按照cakephp书上的说明完成了对数据库的操作。问题是在索引视图的表上,我无法按翻译的字段进行排序。该字段实际上并不存在于数据库中,所以这里是我认为问题出现的地方,但我可以在字段上插入数据,因此i18n正常工作。
我尝试了几种设置分页器的方法,但都没有。
例如,我尝试过:
Paginator->sort('Name','name');
Paginator->sort('Name','I18n__name');
Paginator->sort('Name','I18n__name.content');
正如我所看到的,在查询中,它获取了引用它的字段为I18n__name.content',所以我认为这样可行,但事实并非如此。
有什么建议吗?
答案 0 :(得分: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;
}
就是这样,现在翻译的字段可以在分页表中排序。
答案 1 :(得分:0)
我通常使用像
这样的东西echo $this->Paginator->sort('Name', __('Content', true));
然后让__()函数在必要时呈现翻译的名称。或者我误解了这个问题?
干杯 阿诺
答案 2 :(得分:0)
在Cake 1.3.10中
只需$paginator->sort(__('test',true),'field_name');
即可
翻译内容优先,数据库字段名称为第二参数。
定义如下: http://api.cakephp.org/class/paginator-helper#method-PaginatorHelpersort