Создание сортировки с помощью Admin Genertator в Symfony на веб-сайте i18n - PullRequest
0 голосов
/ 19 августа 2010

Я использую Symfony впервые и в проекте, требующем интерфейс на двух языках (в настоящее время). Несмотря на то, что функции фреймворка i18n довольно просты в настройке, я столкнулся с проблемой в разделе администратора сайта. Вот пример файла generator.xml для объекта «Страница»:

config:
  actions: ~
  fields:  ~
  list:
    title: Content Pages
    max_per_page: 15
    display: [=title, slug]
    fields:
      title: { label: "Title" }
      slug: { label: "Slug" }
    sort: [title]

Поле 'title' является переводимым полем в базе данных, поэтому, когда я добавляю более одной Страницы и перехожу в список, я получаю эту ошибку:

 column "title" does not exist
 Failing Query: "SELECT p.id AS p__id, p.page_id AS p__page_id, p.enabled AS p__enabled, p.position AS p__position, p.created_at AS p__created_at, p.updated_at AS p__updated_at FROM page p ORDER BY title asc LIMIT 15"

Что понятно, поскольку система явно пытается выполнить запрос к непереведенной таблице. Однако если я изменил файл generator.xml для сортировки: [creation_at], ошибка все равно появится выше.

Интересно, что если я обновлю страницу max_per_page, это изменение будет отражено в запросе (например, "..LIMIT 14"), поэтому ясно, что, по крайней мере, часть файла анализируется правильно.

Я очистил свой кеш и восстановил базу данных, но я озадачен, почему это происходит.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 22 сентября 2012

Просто используйте параметр peer_method или query_methods.

Вы можете попробовать этот пример:

  list:
    peer_method: doSelectJoinPageI18n 
    display: [ id, slug, =title ]

или этот образец:

  list:
    query_methods: [joinI18n]
    display: [ id, slug, =title ]

Один из них должен работать.Удачи!

0 голосов
/ 21 августа 2010

Я наконец-то нашел решение этой проблемы, и оно интересное.Symfony сохраняет порядок сортировки в файлах cookie сеанса, поэтому, хотя я обновлял файл generator.yml (и очищал кэш Symfony), мои переменные сеанса не были затронуты.Я получил решение от этого обсуждения Symfony-Users в начале года:

http://groups.google.com/group/symfony-users/browse_thread/thread/dd253b853ed50478/0750bee8b29f5427?#0750bee8b29f5427

Важно, хотя основной причиной проблемы были файлы cookie сеанса, тот факт, что это означалозапрос к БД для несуществующего (переведенного) поля вызвал ошибку.

Я до сих пор не знаю, как сортировать по полям i18n, но, по крайней мере, я могу снова просмотреть страницу списка: ->.

...