Cómo “ordenar por” un sfWidgetFormDoctrineChoice en el generador de administraciones
-
21-09-2019 - |
Pregunta
Estoy usando Symfony 1.4 y Doctrina.
Vamos a decir que tengo 2 clases:. Una marca y un producto
Cuando se crea un nuevo producto en el administrador del administrador basada en generador, me gustaría elegir una marca de una lista desplegable.
El generador de administraciones que está haciendo para mí, la creación automática de un sfWidgetFormDoctrineChoice
.
El problema es que las marcas están ordenados por ID. Me gustaría que sean ordenados por su campo de "etiqueta".
Con el fin de hacer eso hice lo siguiente en mi clase ProductForm
:
$this->widgetSchema['brand_id']->addOption('order_by','label');
Pero me sale el siguiente error:
Error de sintaxis o acceso violación: 1064 Usted tiene un error en su sintaxis SQL; compruebe el manual que corresponde a su versión del servidor MySQL para el sintaxis derecho al uso cerca 'a' en la línea 1. A falta de consulta: "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 DE marca b ORDER BY l a "
El orden de declaración es muy raro. No entiendo por qué parece cortar el nombre de la orden por la declaración.
Editar: Aparentemente la opción 'order_by' está esperando una matriz como un segundo parámetro. ¿Qué valores se esperaba?
Solución
que no probamos la solución de benlumley desde que respondió bien cuando encontré mi solución. Parece más tedioso que lo que terminó haciendo.
Me echó un vistazo al código fuente para averiguar cómo todo esto estaba funcionando. Resulta que la opción "order_by" necesita una matriz que especifica el campo en el que se desea ordenar los resultados y, o bien 'ASC' o 'desc':
$this->widgetSchema['product_id']->addOption('order_by',array('label','asc'));
Funciona como un encanto.
Otros consejos
Se debe echar un vistazo aquí:
http://trac.symfony-project.org/wiki/HowtoSortAdminGeneratorListByForeignTableName
Su sede fuera de una versión antigua de Symfony, por lo que sospecha que el plugin que se vincula no va a funcionar. Pero creo que el método todavía debe estar en buen estado - quid de la cuestión es que hay que añadir el método de la acción para interceptar y modificar el modo predeterminado de la clasificación por este campo específico:
Para la doctrina, es necesario definir / anular addSortQuery, para la propulsión, addSortCriteria.
Te recomendamos echar un vistazo en la carpeta de caché para ver lo que las clases generadas automáticamente parecerse a conseguir la caída de cómo funciona.