Cómo cambiar las opciones de un filtro de administración de Symfony

Tengo una mesa / clase llamada ImportBundle. ImportBundle tiene un active bandera que se puede establecer en 1 o 0.

En una de mis páginas de administración tengo un campo de selección que muestra todos los ImportBundles en mi base de datos. Me gustaría ver solo los activos.

¿Cómo cambio esto?

preguntado el 16 de mayo de 11 a las 17:05

¿Su campo de selección es parte de un formulario modelo o formulario de filtro? (ignóralo, no me he dado cuenta filtrar en tu pregunta) -

2 Respuestas

Si su campo de selección es un sfWidgetFormDoctrineChoice, entonces debe establecer la opción table_method.

Por ejemplo, si tiene un modelo con relación de muchos a muchos con Relacionados:

class ModelFormFilter extends BaseModelFormFilter
{
  public function configure()
  {
    $this->getWidget('related_list')->setOption('table_method', 'getActive');
  }
}

class RelatedTable extends Doctrine_Table
{  
  public function getActive()
  {
    return $this->createQuery('r')
      ->where('r.is_active = ?', true)
      ->execute();
  }
}

contestado el 17 de mayo de 11 a las 13:05

Eso era exactamente lo que quería. Gracias. - Jason Swett

¿Desea cambiar el valor activo predeterminado, eliminar el campo activo o modificar la consulta base?

Establecer el valor predeterminado

Agrega una getFilterDefaults método para ImportBundleGeneratorConfiguration:

public function getFilterDefaults()
{
  return array('active' => true);
}

Quitar el campo

Desarmar el campo del filtro en ImportBundleFormFilter o cambiar el display Bajo el filter título generador.yml. Si ImportBundleFormFilter se utiliza en otro lugar, es posible que deba ampliarlo para desarmar el campo.

Modificar la consulta

Seleccione las table_method opción en generator.yml o en el propio filtro. Ver más instrucciones acá.

contestado el 16 de mayo de 11 a las 23:05

En realidad, no estoy tratando de establecer ningún tipo de criterio de filtrado predeterminado ni eliminar ninguno de los campos del filtro. Solo estoy tratando de cambiar el opciones se muestra en uno de mis campos, así que solo vemos ImportBundles donde import_bundle.active = 1. (Hay un montón de paquetes de importación inactivos que abarrotan el campo de selección). Jason Swett

Editado para agregar una respuesta para eso también. - Jeremy Kauffman

Bien gracias. ¿De verdad me lo podrías deletrear? Me está costando entender lo que tengo que hacer. - Jason Swett

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.