带i18n的cakephp分页器排序字段

带i18n的cakephp分页器排序字段,php,cakephp,internationalization,Php,Cakephp,Internationalization,我用cakephp编写了一个应用程序,并按照cakephp手册上的说明在数据库上编写了i18n。问题是,在索引视图的表上,我不能按转换的字段排序。这个字段实际上不存在于数据库中,所以我想问题出在这里,但是我可以在字段中插入数据,这样i18n就可以正常工作了 我试过几种设置分页器的方法,但都不起作用 例如,我尝试过: Paginator->sort('Name','name'); Paginator->sort('Name','I18n__name'); Paginator->s

我用cakephp编写了一个应用程序,并按照cakephp手册上的说明在数据库上编写了i18n。问题是,在索引视图的表上,我不能按转换的字段排序。这个字段实际上不存在于数据库中,所以我想问题出在这里,但是我可以在字段中插入数据,这样i18n就可以正常工作了

我试过几种设置分页器的方法,但都不起作用

例如,我尝试过:

Paginator->sort('Name','name');
Paginator->sort('Name','I18n__name');
Paginator->sort('Name','I18n__name.content');
正如我所看到的,在查询中,它获取引用它为I18n_uuname.content'的字段,所以我认为这会起作用,但它没有


有什么建议吗?

我终于找到了。我认为这应该在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; 
}

就是这样,现在翻译的字段可以在分页表中排序。

我终于找到了它。我认为这应该在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; 
}

就是这样,现在翻译的字段可以在分页表中排序。

我通常使用

echo $this->Paginator->sort('Name', __('Content', true));
然后,如果需要,让函数u()呈现一个翻译后的名称。还是我误解了这个问题

干杯
阿诺

我通常使用

echo $this->Paginator->sort('Name', __('Content', true));
然后,如果需要,让函数u()呈现一个翻译后的名称。还是我误解了这个问题

干杯 蛋糕1.3.10中的阿诺

只需
$paginator->sort(uu('test',true),'field_name')将起作用

翻译的内容放在第一位,数据库字段名放在第二位

定义见: 蛋糕1.3.10中的

只需
$paginator->sort(uu('test',true),'field_name')将起作用

翻译的内容放在第一位,数据库字段名放在第二位

定义见:

使用_;()用于静态字段,因此翻译必须在po文件中。我正在使用Translate行为,因此每当我在数据库中添加新实体时,我都可以提供翻译。因此,翻译实际上存储在数据库中。使用_u()用于静态字段,因此翻译必须在po文件中。我正在使用Translate行为,因此每当我在数据库中添加新实体时,我都可以提供翻译。因此,翻译实际上存储在数据库中。