按i18n字段排序symfony admin-generator-list

时间:2010-12-19 13:24:07

标签: php symfony1 doctrine symfony-1.4

我无法通过i18n字段对管理生成器列表进行排序。

有人给我使用片段吗?要排序的字段是名称

schema.yml是:

...
        product:
      actAs:
        I18n:
          fields: [name, description]
      columns:
        product_typ_id: integer
        name: string(255)
        description: string
        image: string(255)
        image_thumb: string(255)
      relations:
        productTyp:
          onDelete: SET NULL
...

1 个答案:

答案 0 :(得分:3)

我使用了http://stereointeractive.com/blog/2011/01/08/symfony-1-4-admin-generator-sort-on-custom-column/

使用propel和I18N列(在我的情况下称为'name')使这对symfony 1.4有效。

在您的generator.yml中添加:

  • 字段:name:{is_real:true}

  • list:peer_method:doSelectWithI18n

在你的actions.class.php中:

protected function isValidSortColumn($column)
{
  return parent::isValidSortColumn($column) || $column == 'name';
}

protected function addSortCriteria($criteria)
{
    if (array(null, null) == ($sort = $this->getSort()))
    {
      return;
    }
    if($sort[0]!="name") {
        $column = MyPeer::translateFieldName($sort[0], BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_COLNAME);
    } else {
        $column = MyI18nPeer::NAME;
    }
    if ('asc' == $sort[1])
    {
      $criteria->addAscendingOrderByColumn($column);
    }
    else
    {
      $criteria->addDescendingOrderByColumn($column);
    }
}