【问题标题】:Cakephp 3 paginator sort fields with translate behavior i18nCakephp 3 具有翻译行为 i18n 的分页器排序字段
【发布时间】:2015-07-16 17:06:55
【问题描述】:

我有一个具有Translate 行为的Posts 表,我想在索引视图中按表上的标题对其进行排序。我无法按已翻译的字段排序,因为该字段实际上并不存在于数据库中。它们存在于i18n 表中。

正如我上面解释的那样,这不起作用:

$this->Paginator->sort('title');
$this->Paginator->sort('Posts_title_translation.content');

那么,我该怎么办?我错过了什么?

非常感谢!

【问题讨论】:

  • "doesn't work" 不是正确的问题描述,请始终具体说明到底发生了什么(例如,没有ORDER BY 子句将是生成),即使问题看起来很明显。

标签: sorting internationalization cakephp-3.0 paginator


【解决方案1】:

第二个变体应该在字段被列入白名单后起作用,这通常是用于排序的关联所必需的:

$this->paginate = [
    // ...
    'sortWhitelist' => [
        'Posts_title_translation.content',
        // ...
    ]
];

请注意,使用白名单后,您还必须添加 Posts 表中需要用于排序的所有其他字段!

另请参阅Cookbook > ... Components > Pagination > Control which Fields Used for Ordering

【讨论】:

    猜你喜欢
    • 2016-03-29
    • 2013-12-01
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    • 2016-11-19
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    相关资源
    最近更新 更多