在i18n网站上使用Symfony中的Admin Genertator创建排序

时间:2010-08-19 11:09:44

标签: internationalization symfony1

我第一次使用Symfony,并且正在使用两种语言(当前)需要前端的项目。虽然框架的i18n功能起步和运行相当简单,但我在网站管理部分遇到了问题。以下是“Page”对象的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'字段是数据库中的可翻译字段,因此当我添加多个Page并转到列表视图时,我收到此错误:

 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更改为sort [[created_at],则仍会出现上述错误。

有趣的是,如果我更新了max_per_page,那么该更改会反映在查询中(例如“..LIMIT 14”),所以至少有一些文件正在被正确解析。

我已经清除了我的缓存并重新生成了数据库,但我很难过为什么会这样。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我终于找到了解决这个问题的方法,这是一个有趣的问题。 Symfony将排序顺序存储在会话cookie中,因此虽然我更新了generator.yml文件(并清除了Symfony缓存),但我的会话变量没有受到影响。我从今年早些时候的Symfony-Users讨论中得到了解决方案:

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

至关重要的是,虽然问题的根本原因是会话cookie,但这意味着对不存在(已翻译)字段的数据库进行查询会导致错误。

我仍然不知道如何按i18n字段排序,但至少我可以再次查看列表页面: - >。

答案 1 :(得分:0)

只需使用peer_method选项或query_methods选项。

您可以尝试以下示例:

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

或此样本:

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

其中一个应该有用。 祝好运!