cakephp paginator сортирует поля с помощью i18n - PullRequest
1 голос
/ 11 ноября 2010

У меня есть приложение, созданное с cakephp, и я сделал i18n на базе данных, следуя инструкциям из книги cakephp. Дело в том, что в таблице в представлении индекса я не могу отсортировать по полям, которые переведены. Поле на самом деле не существует в базе данных, поэтому я полагаю, что здесь возникает проблема, но я могу вставить данные в поле, поэтому i18n работает правильно.

Я пробовал несколько способов настройки пагинатора, но ни один из них не работает.

Например, я пробовал:

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

Как я вижу, в запросах оно получает поле, ссылающееся на него как I18n__name.content ', поэтому я подумал, что это будет работать, но это не так.

Есть предложения?

Ответы [ 3 ]

1 голос
/ 17 ноября 2010

Я наконец нашел это.Я думаю, что это должно работать из коробки в 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 голосов
/ 16 июня 2011

В Cake 1.3.10

Просто $paginator->sort(__('test',true),'field_name'); будет работать

Сначала переводится содержимое, имя поля базы данных - второй параметр.

Как определено в: http://api.cakephp.org/class/paginator-helper#method-PaginatorHelpersort

0 голосов
/ 17 ноября 2010

Я обычно использую что-то вроде

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

и пусть функция __ () выводит переведенное имя, если это необходимо Или я неправильно понимаю проблему?

Приветствие Arno

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...