Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/04/2011, 05:30
agugut
 
Fecha de Ingreso: agosto-2008
Mensajes: 88
Antigüedad: 16 años, 3 meses
Puntos: 0
problema paginador con filtros

Hola tengo un modulo de nombre proyecto, en donde tengo definido una accion index y dentro del index tengo los filtros( los que genera doctrine en la clase lib/filter) El problema esta en que tengo un paginador que me anda perfecto con el index. Pero cuando quiero filtrar solo me filtra la 1º pagina. Si quiero pasar a la 2º pagina filtrada me tira un error.
Los archivos son:
indexSuccess.php
Código PHP:
<?php
slot
(
        
'title',
        
sprintf('> Proyectos > Todos'))
?>
<h1>Proyectos</h1>
<h4>Buscar</h4>
<form action="<?php echo url_for('proyecto/filtrar'); ?>" method="post">
    <table border="1" cellpadding="1" cellspacing="1" class="tabla">
        <tbody>
            <?php
            
echo $filtro;
            
?>
        </tbody>
    </table>
    <input type="submit" value="Buscar" name="filtrar"/>
    <input class="button" type="reset" name="limpias" value="Limpiar"/>

</form>
<table border="1" cellpadding="1" cellspacing="1" class="tabla">
    <thead>
        <tr class="modo1">
            <th>Codigo identificador</th>
            <th>Nombre</th>
            <th>Fecha inicio</th>
            <th>Fecha fin estimada</th>
            <th>Fecha fin real</th>
            <th>Hs oficina calculada</th>
            <th>Hs proyecto calculada</th>
            <th>Hs proyecto cotizada</th>
            <th>Costo estimado</th>
            <th>Costo total</th>
            <th>Encargado</th>
            <th>Tipo Proyecto</th>
            <th>Contacto</th>
            <th>Usuarios Afectados </th>
            <th>Imagen</th>
            <th>PDF</th>
        </tr>
    </thead>
    <tbody>
        <?php
            $proyectos 
$pager->getResults();
        
?>
        <?php foreach ($proyectos as $proyecto): ?>
                <tr class="modo2">
                    <td><a href="<?php echo url_for('proyecto/show?id=' $proyecto->getId()) ?>">
<?php if ($proyecto->getCodigoIdentificador() == null) : ?>
                    <?php echo $proyecto->getContacto()->getClienteCiudad()->getCliente()->getCodigoIdentificador() . '-' $proyecto->getContacto()->getClienteCiudad()->getCodigoSede() . '-' $proyecto->getTipoProyecto()->getCodigoTipo() . '-' $proyecto->codigoIdentificador($proyecto->getTipoProyecto()->getId(), $proyecto->getId()) ?>
                    <?php else :
                        echo 
$proyecto->getCodigoIdentificador() ?>
                    <?php endif ?>
                    </a>
                </td>
                <td><a href="<?php echo url_for('proyecto/show?id=' $proyecto->getId()) ?>"><?php echo $proyecto->getNombre() ?></a></td>
                <td><?php
                        
if ($proyecto->getFechaInicio() != null):
                            echo 
date("d/m/Y"strtotime($proyecto->getFechaInicio()));
                        else:
                            echo 
"fecha no definida";
                        endif
                    
?></td>
                    <td><?php
                        
if ($proyecto->getFechaFinEstimada() != null):
                            echo 
date("d/m/Y"strtotime($proyecto->getFechaFinEstimada()));
                        else:
                            echo 
"fecha no definida";
                        endif
                    
?></td>
                    <td><?php
                        
if ($proyecto->getFechaFinReal() != null):
                            echo 
date("d/m/Y"strtotime($proyecto->getFechaFinReal()));
                        else:
                            echo 
"fecha no definida";
                        endif
                    
?></td>
                    <td><?php echo $proyecto->getHsOficinaCalculada() ?></td>
                    <td><?php echo $proyecto->getHsProyectoCalculada() ?></td>
                    <td><?php echo $proyecto->getHsProyectoCotizada() ?></td>
                    <td><?php echo $proyecto->getCostoEstimado() ?></td>
                    <td><?php echo $proyecto->getCostoTotal() ?></td>
                    <td><?php echo $proyecto->getSfGuardUser() ?></td>
                    <td><?php echo $proyecto->getTipoProyecto() ?></td>
                    <td><?php echo $proyecto->getContacto() ?></td>
                    <td><?php
                        $usuarios 
$proyecto->getUsuariosProyecto();
                        foreach (
$usuarios as $i => $usuario):
                            echo 
$usuario '<br>';
                        endforeach
                    
?>
                    </td>
                    <td> <?php echo image_tag('/uploads/images/thumbs/' $proyecto->getFilename(), array('alt' =>
                            
$proyecto->getCodigoIdentificador())); ?></td>
                    <td><a href="<?php echo url_for('proyecto/pdf?id=' $proyecto->getId()) ?>">Ver PDF</a></td>
                </tr>
<?php endforeach; ?>
            </tbody>
        </table>
<?php include_partial('proyecto/paginas', array('pager' => $pager)) ?>
                <a href="<?php echo url_for('proyecto/iniciados'?>">Iniciados</a> | <a href="<?php echo url_for('proyecto/finalizados'?>">Finalizados</a> | <a href="<?php echo url_for('proyecto/solpe'?>">Con Solped</a> | <a href="<?php echo url_for('proyecto/facturados'?>">Facturados</a> | <a href="<?php echo url_for('proyecto/cobrados'?>">Cobrados</a><br>
                        <a href="<?php echo url_for('proyecto/new'?>">Registrar</a>
executeIndex y executeFiltrar
Código PHP:
public function executeIndex(sfWebRequest $request) {
        
$this->proyectos Doctrine_Core::getTable('Proyecto')
                        ->
createQuery('a')
                        ->
execute();
        if (
sfConfig::has('app_max_registros')) {
            
$nro sfConfig::get('app_max_registros');
        } else {
            
$nro 10;
        }
        
$this->pager = new sfDoctrinePager(
                        
'proyecto',
                        
$nro
        
);
        
$this->pager->setQuery(Doctrine::getTable('Proyecto')->createQuery('a'));
        
$this->pager->setPage($request->getParameter('page'1));
        
$this->pager->init();
        
$this->filtro = new ProyectoFormFilter();
    }

    public function 
executeFiltrar(sfWebRequest $request) {
        
$this->filtro = new ProyectoFormFilter();
        
$this->filtro->bind($request->getParameter('proyecto_filters'));
        if (
$this->filtro->isValid()) {
            
//$this->consulta = $this->filtro->buildQuery($this->filtro->getValues());
            //$this->proyectos = $this->consulta->execute();
            
$query $this->filtro->buildQuery($this->filtro->getValues());
            if (
sfConfig::has('app_max_registros')) {
                
$nro sfConfig::get('app_max_registros');
            } else {
                
$nro 10;
            }

            
$this->pager = new sfDoctrinePager('proyecto'$nro);
            
$this->pager->setQuery($query);
            
//$this->pager->getQuery();
            
$this->pager->setPage($this->getRequestParameter('page'1));
            
$this->pager->init();
            
//var_dump($this->consulta);die;
        
}
        
$this->setTemplate('index');
    } 
_paginas.php
Código PHP:
<?php if ($pager->haveToPaginate()): ?>
  <div class="pagination">
    <a href="?page=1">
      <img src="/images/first.png" alt="Primera Página" />
    </a>

    <a href="?page=<?php echo $pager->getPreviousPage() ?>">
      <img src="/images/previous.png" alt="Previous page" title="Página Anterior" />
    </a>

    <?php foreach ($pager->getLinks() as $page): ?>
      <?php if ($page == $pager->getPage()): ?>
        <?php echo '<strong>'.$page.'</strong>' ?>
      <?php else: ?>
        <a href="?page=<?php echo $page ?>"><?php echo $page ?></a>
      <?php endif; ?>
    <?php endforeach; ?>

    <a href="?page=<?php echo $pager->getNextPage() ?>">
      <img src="/images/next.png" alt="Next page" title="Proxima Página" />
    </a>

    <a href="?page=<?php echo $pager->getLastPage() ?>">
      <img src="/images/last.png" alt="Last page" title="Última Página" />
    </a>
  </div>
<?php endif; ?>
El error que me tira cuando quiero pasar de pagina es Notice: Undefined variable: pager in /home/agustin/web/i4d/apps/backend/modules/proyecto/templates/indexSuccess.php on line 43