如何在Admin Generator中"排序"sfWidgetFormDoctrineChoice

Gui*_*dre 6 doctrine symfony1 symfony-1.4 admin-generator

我正在使用Symfony 1.4和Doctrine.

假设我有两个类:品牌和产品.

当我在基于Admin Generator的管理员中创建新产品时,我想从下拉列表中选择一个品牌.Admin Generator正在为我做这件事,自动创建一个sfWidgetFormDoctrineChoice.

问题是品牌是按照ID排序的.我希望他们的"标签"字段可以订购.

为了做到这一点,我在ProductForm课堂上做了以下几点:

$this->widgetSchema['brand_id']->addOption('order_by','label');
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

语法错误或访问冲突:1064 SQL语法中有错误; 检查与MySQL服务器版本对应的手册,以便在第1行的'a'附近使用正确的语法.失败的查询:"SELECT b.id AS b__id,b.external_id AS b__external_id,b.label AS b__label,b.created_at AS b__created_at,b.updated_at AS b__updated_at FROM brand b ORDER BY la"

声明的顺序真的很奇怪.我不明白为什么它似乎削减了命令的名称.

编辑:显然'order_by'选项期望数组作为第二个参数.它期望什么价值?

Gui*_*dre 18

我没有尝试benlumley的解决方案,因为当我找到解决方案时,他的回答是正确的.这似乎比我结束时更乏味.

我看了一下源代码,弄清楚这一切是如何工作的.事实证明,"order_by"选项需要一个数组,指定要在其上排序结果的字段以及"asc"或"desc":

$this->widgetSchema['product_id']->addOption('order_by',array('label','asc'));
Run Code Online (Sandbox Code Playgroud)

它就像一个魅力.