Ver Mensaje Individual
  #2 (permalink)  
Antiguo 17/06/2013, 05:31
Avatar de Delek
Delek
 
Fecha de Ingreso: marzo-2005
Ubicación: Madrid
Mensajes: 75
Antigüedad: 19 años, 1 mes
Puntos: 0
Respuesta: Filtrar datos con objeto criteria

Parece que ya lo he solucionado, el problema parece ser que el retrieveByPk no funciona bien al recoger la cadena de request múltiple, por eso he recogido el modelo por un request normal. El problema viene ahora, que no se como refactorizar el código, que está en el action.class

Código:
  public function executeShow(sfWebRequest $request)
  {
    //Ordena menú categorías
  	$this->rogasanz_cat_accesorios_list = RogasanzCatAccesoriosPeer::ordenarMenu(); 
  	//Lista menú coches
  	$this->rogasanz_modelos_list = RogasanzModelosPeer::doSelect(new Criteria());

  	//Listado de artículos
	$this->modelo = $this->getRequestParameter('mod', null);
	$criteria = new Criteria();
	$this->categoria = RogasanzCatAccesoriosPeer::retrieveByPk($request->getParameter('id'));
    $criteria->add(RogasanzAccesoriosPeer::CATEGORIA_ID, $this->categoria->getId(), Criteria::EQUAL);
    if($this->modelo == !null)
    {
      $criteria->add(RogasanzAccesoriosPeer::MODELO_ID, $this->modelo, Criteria::EQUAL);
    }  
    $this->rogasanz_accesorios_list = RogasanzAccesoriosPeer::doSelect($criteria);

    $this->forward404Unless($this->categoria);
  }
Por ejemplo, al crear la función filtrarModelos para refactorizarla, no se donde heredar para que me reconozca la funcion getRequestParameter()

Código:
class RogasanzAccesoriosPeer extends BaseRogasanzAccesoriosPeer {
  
  public function __toString()
  {
    return $this->getNombre();
  }
  
  static public function ordenarMenu()
  {
  	  $criteria = new Criteria();
      $criteria->add(self::NOMBRE, null, Criteria::ISNOTNULL);
      $criteria->addAscendingOrderByColumn(self::NOMBRE);
      return self::doSelect($criteria);
  }

  static public function filtraModelos()
  {
	$this->modelo = $this->getRequestParameter('mod', null);

        etc...
        etc...
        etc...
  }