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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top