Yii Framework Forum: [RESUELTO]CLinkPager y criterios de busqueda - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

[RESUELTO]CLinkPager y criterios de busqueda Rate Topic: -----

#1 User is offline   gallego123 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 535
  • Joined: 11-August 09
  • Location:Argentina

Posted 07 October 2009 - 06:16 AM

Hola comunidad

tengo un problema

agregue a el clasico "admin" generado por "crud" criterios de busqueda

cuando hago el submit, me retorna los datos filtrados, pero cuando retorna muchos datos y uso el paginador para ir a la siguiente pagina, pierdo el criterio y me retorna todos los datos (porque no hace submit)

mi pregunta es ¿¿¿Como se hace esto???

les paso el codigo para que me puedan entender un poco mejor

Controlador
    public function actionAdmin()
    {
        $this->processAdminCommand();

        $criterios=array('b_dominio'=>'','b_valor'=>'','b_descripcion'=>'','b_cod_sisa'=>'');
                $criteria=new CDbCriteria;

                if  (!empty($_POST['b_dominio'])) {
                    $criteria->condition='dominio like :dominio';
                    $criteria->params=array(':dominio'=>$_POST['b_dominio'].'%');
                    $criterios['b_dominio']=$_POST['b_dominio'];
                }
                if  (!empty($_POST['b_valor'])) {
                    if (empty($criteria->condition))
                             $criteria->condition='valor like :valor';
                    else
                             $criteria->condition=$criteria->condition.' and valor like :valor';
                    $criteria->params=array_merge($criteria->params,array(':valor'=>$_POST['b_valor'].'%'));
                    $criterios['b_valor']=$_POST['b_valor'];
                }

                if  (!empty($_POST['b_descripcion'])) {
                    if (empty($criteria->condition))
                             $criteria->condition='descripcion like :descripcion';
                    else
                             $criteria->condition=$criteria->condition.' and descripcion like :descripcion';
                    $criteria->params=array_merge($criteria->params,array(':descripcion'=>$_POST['b_descripcion'].'%'));
                    $criterios['b_descripcion']=$_POST['b_descripcion'];
                }

                if  (!empty($_POST['b_cod_sisa'])) {
                    if (empty($criteria->condition))
                             $criteria->condition='cod_sisa like :cod_sisa';
                    else
                             $criteria->condition=$criteria->condition.' and cod_sisa like :cod_sisa';
                    $criteria->params=array_merge($criteria->params,array(':cod_sisa'=>$_POST['b_cod_sisa'].'%'));
                    $criterios['b_cod_sisa']=$_POST['b_cod_sisa'];
                }

        $pages=new CPagination(Dominios::model()->count($criteria));
        $pages->pageSize=self::PAGE_SIZE;
        $pages->applyLimit($criteria);

        $sort=new CSort('Dominios');
        $sort->applyOrder($criteria);

        $models=Dominios::model()->findAll($criteria);

        $this->render('admin',array(
            'models'=>$models,
            'pages'=>$pages,
                        'criterios'=>$criterios,
            'sort'=>$sort,
        ));
    }



Vista
<?php echo CHtml::beginForm(); ?>
<h2>Administrar Dominios</h2>

<div class="actionBar">
[<?php echo CHtml::link('Lista de Dominios',array('list')); ?>]
[<?php echo CHtml::link('Nuevo Dominios',array('create')); ?>]
</div>

<table class="dataGrid">
  <thead>
  <tr>
    <th><?php echo $sort->link('idDominio'); ?></th>
    <th><?php echo $sort->link('dominio'); ?></th>
    <th><?php echo $sort->link('valor'); ?></th>
    <th><?php echo $sort->link('descripcion'); ?></th>
    <th><?php echo $sort->link('cod_sisa'); ?></th>
    <th>Actions</th>
  </tr>
  </thead>
  <tbody>
<?php foreach($models as $n=>$model): ?>
  <tr class="<?php echo $n%2?'even':'odd';?>">
    <td><?php echo CHtml::link($model->idDominio,array('show','id'=>$model->idDominio)); ?></td>
    <td><?php echo CHtml::encode($model->dominio); ?></td>
    <td><?php echo CHtml::encode($model->valor); ?></td>
    <td><?php echo CHtml::encode($model->descripcion); ?></td>
    <td><?php echo CHtml::encode($model->cod_sisa); ?></td>
    <td>
      <?php echo CHtml::link('Modificar',array('update','id'=>$model->idDominio)); ?>
      <?php echo CHtml::linkButton('Borrar',array(
            'submit'=>'',
            'params'=>array('command'=>'delete','id'=>$model->idDominio),
            'confirm'=>"Esta seguro de borrar #{$model->idDominio}?")); ?>
    </td>
  </tr>
<?php endforeach; ?>

  <tr>

    <td><?php echo ""?></td>
    <td><?php echo CHtml::TextField('b_dominio',$criterios['b_dominio'],array('size'=>10)); ?></td>
    <td><?php echo CHtml::TextField('b_valor',$criterios['b_valor'],array('size'=>10)); ?></td>
    <td><?php echo CHtml::TextField('b_descripcion',$criterios['b_descripcion'],array('size'=>10)); ?></td>
    <td><?php echo CHtml::TextField('b_cod_sisa',$criterios['b_cod_sisa'],array('size'=>10)); ?></td>
    <td<?php echo  CHtml::submitButton('Buscar'); ?></td>


  </tr>

  </tbody>
</table>
<br/>

<?php $this->widget('CLinkPager',array('pages'=>$pages)); ?>
<?php echo CHtml::endForm(); ?>



mirando el foro del sitio (yiiframework) veo que si funciona
pero la diferencia esta en el url que forma

en mi codigo el CLinkPager genera
<pre id="line189">Ir a página: <<span class="start-tag">ul</span><span class="attribute-name"> id</span>=<span class="attribute-value">"yw0" </span><span class="attribute-name">class</span>=<span class="attribute-value">"yiiPager"</span>><<span class="start-tag">li</span><span class="attribute-name"> class</span>=<span class="attribute-value">"first hidden"</span>><<span class="start-tag">a</span><span class="attribute-name"> href</span><span>="</span><a href="view-source:http://10.11.49.2:8080/sistemas/index.php?r=comun/dominios/admin">/sistemas/index.php?r=comun/dominios/admin</a><span>"</span>>&<span class="entity">lt;</span>&<span class="entity">lt;</span> Primero</<span class="end-tag">a</span>></<span class="end-tag">li</span>>
<<span class="start-tag">li</span><span class="attribute-name"> class</span>=<span class="attribute-value">"previous hidden"</span>><<span class="start-tag">a</span><span class="attribute-name"> href</span><span>="</span><a href="view-source:http://10.11.49.2:8080/sistemas/index.php?r=comun/dominios/admin">/sistemas/index.php?r=comun/dominios/admin</a><span>"</span>>&<span class="entity">lt;</span> Anterior</<span class="end-tag">a</span>></<span class="end-tag">li</span>>
<<span class="start-tag">li</span><span class="attribute-name"> class</span>=<span class="attribute-value">"page selected"</span>><<span class="start-tag">a</span><span class="attribute-name"> href</span><span>="</span><a href="view-source:http://10.11.49.2:8080/sistemas/index.php?r=comun/dominios/admin">/sistemas/index.php?r=comun/dominios/admin</a><span>"</span>>1</<span class="end-tag">a</span>></<span class="end-tag">li</span>>
<<span class="start-tag">li</span><span class="attribute-name"> class</span>=<span class="attribute-value">"page"</span>><<span class="start-tag">a</span><span class="attribute-name"> href</span><span>="</span><a href="view-source:http://10.11.49.2:8080/sistemas/index.php?r=comun/dominios/admin&page=2">/sistemas/index.php?r=comun/dominios/admin&amp;page=2</a><span>"</span>>2</<span class="end-tag">a</span>></<span class="end-tag">li</span>>
<<span class="start-tag">li</span><span class="attribute-name"> class</span>=<span class="attribute-value">"page"</span>><<span class="start-tag">a</span><span class="attribute-name"> href</span><span>="</span><a href="view-source:http://10.11.49.2:8080/sistemas/index.php?r=comun/dominios/admin&page=3">/sistemas/index.php?r=comun/dominios/admin&amp;page=3</a><span>"</span>>3</<span class="end-tag">a</span>></<span class="end-tag">li</span>>
<<span class="start-tag">li</span><span class="attribute-name"> class</span>=<span class="attribute-value">"page"</span>><<span class="start-tag">a</span><span class="attribute-name"> href</span><span>="</span><a href="view-source:http://10.11.49.2:8080/sistemas/index.php?r=comun/dominios/admin&page=4">/sistemas/index.php?r=comun/dominios/admin&amp;page=4</a><span>"</span>>4</<span class="end-tag">a</span>></<span class="end-tag">li</span>>
<<span class="start-tag">li</span><span class="attribute-name"> class</span>=<span class="attribute-value">"next"</span>><<span class="start-tag">a</span><span class="attribute-name"> href</span><span>="</span><a href="view-source:http://10.11.49.2:8080/sistemas/index.php?r=comun/dominios/admin&page=2">/sistemas/index.php?r=comun/dominios/admin&amp;page=2</a><span>"</span>>Siguiente &<span class="entity">gt;</span></<span class="end-tag">a</span>></<span class="end-tag">li</span>>
</pre><pre id="line197"><<span class="start-tag">li</span><span class="attribute-name"> class</span>=<span class="attribute-value">"last hidden"</span>><<span class="start-tag">a</span><span class="attribute-name"> href</span><span>="</span><a href="view-source:http://10.11.49.2:8080/sistemas/index.php?r=comun/dominios/admin&page=4">/sistemas/index.php?r=comun/dominios/admin&amp;page=4</a><span>"</span>>Último &<span class="entity">gt;</span>&<span class="entity">gt;</span></<span class="end-tag">a</span>></<span class="end-tag">li</span>></<span class="end-tag">ul</span>></<span class="end-tag">form</span>></<span class="end-tag">div</span>><span class="comment"><!-- content --></span>

</pre>


y en el sitio, buscando "Chtml" genera
<pre id="line9"><<span class="start-tag">div</span><span class="attribute-name"> class</span>=<span class="attribute-value">"topic_controls"</span>>
		<<span class="start-tag">ul</span><span class="attribute-name"> class</span>=<span class="attribute-value">"pagination left"</span>>
		<<span class="start-tag">li</span><span class="attribute-name"> class</span>=<span class="attribute-value">"total"</span>>(8 Pages)</<span class="end-tag">li</span>>
		<<span class="start-tag">li</span><span class="attribute-name"> id</span>=<span class="attribute-value">"anonymous_element_1" </span><span class="attribute-name">class</span>=<span class="attribute-value">"pagejump clickable pj0091227001"</span>>
			<<span class="start-tag">img</span><span class="attribute-name"> src</span><span>="</span><a href="view-source:http://www.yiiframework.com/forum/public/style_images/master/dropdown.png">http://www.yiiframework.com/forum/public/style_images/master/dropdown.png</a><span>" </span><span class="attribute-name">alt</span>=<span class="attribute-value">"+"</span>>
			<<span class="start-tag">script</span><span class="attribute-name"> type</span>=<span class="attribute-value">"text/javascript"</span>>
				ipb.global.registerPageJump( '0091227001', { url: "http://www.yiiframework.com/forum/index.php?app=core&amp;module=search&amp;do=quick_search&amp;search_sort_by=date&amp;search_sort_order=desc&amp;search_term=CHtml&amp;search_filter_app[forums]=1", stKey: 'st', perPage: 25, totalPages: 8 } );
			</<span class="end-tag">script</span>>
</pre><pre id="line19">		</<span class="end-tag">li</span>>
		
		
		
			
				
					<<span class="start-tag">li</span><span class="attribute-name"> class</span>=<span class="attribute-value">"active"</span>>1</<span class="end-tag">li</span>>
				
			

				
					<<span class="start-tag">li</span>><<span class="start-tag">a</span><span class="attribute-name"> href</span><span>="</span><a href="view-source:http://www.yiiframework.com/forum/index.php?app=core&module=search&do=quick_search&search_sort_by=date&search_sort_order=desc&search_term=CHtml&search_filter_app[forums]=1&st=25">http://www.yiiframework.com/forum/index.php?app=core&amp;module=search&amp;do=quick_search&amp;search_sort_by=date&amp;search_sort_order=desc&amp;search_term=CHtml&amp;search_filter_app[forums]=1&amp;st=25</a><span>" </span><span class="attribute-name">title</span>=<span class="attribute-value">"2"</span>>2</<span class="end-tag">a</span>></<span class="end-tag">li</span>>
				
			

				
					<<span class="start-tag">li</span>><<span class="start-tag">a</span><span class="attribute-name"> href</span><span>="</span><a href="view-source:http://www.yiiframework.com/forum/index.php?app=core&module=search&do=quick_search&search_sort_by=date&search_sort_order=desc&search_term=CHtml&search_filter_app[forums]=1&st=50">http://www.yiiframework.com/forum/index.php?app=core&amp;module=search&amp;do=quick_search&amp;search_sort_by=date&amp;search_sort_order=desc&amp;search_term=CHtml&amp;search_filter_app[forums]=1&amp;st=50</a><span>" </span><span class="attribute-name">title</span>=<span class="attribute-value">"3"</span>>3</<span class="end-tag">a</span>></<span class="end-tag">li</span>>
				
			
		
		
			<<span class="start-tag">li</span><span class="attribute-name"> class</span>=<span class="attribute-value">"next"</span>><<span class="start-tag">a</span><span class="attribute-name"> href</span><span>="</span><a href="view-source:http://www.yiiframework.com/forum/index.php?app=core&module=search&do=quick_search&search_sort_by=date&search_sort_order=desc&search_term=CHtml&search_filter_app[forums]=1&st=25">http://www.yiiframework.com/forum/index.php?app=core&amp;module=search&amp;do=quick_search&amp;search_sort_by=date&amp;search_sort_order=desc&amp;search_term=CHtml&amp;search_filter_app[forums]=1&amp;st=25</a><span>" </span><span class="attribute-name">title</span>=<span class="attribute-value">"Next page" </span><span class="attribute-name">rel</span>=<span class="attribute-value">"next"</span>>→</<span class="end-tag">a</span>></<span class="end-tag">li</span>>
		
		
			<<span class="start-tag">li</span><span class="attribute-name"> class</span>=<span class="attribute-value">"last"</span>><<span class="start-tag">a</span><span class="attribute-name"> href</span><span>="</span><a href="view-source:http://www.yiiframework.com/forum/index.php?app=core&module=search&do=quick_search&search_sort_by=date&search_sort_order=desc&search_term=CHtml&search_filter_app[forums]=1&st=175">http://www.yiiframework.com/forum/index.php?app=core&amp;module=search&amp;do=quick_search&amp;search_sort_by=date&amp;search_sort_order=desc&amp;search_term=CHtml&amp;search_filter_app[forums]=1&amp;st=175</a><span>" </span><span class="attribute-name">title</span>=<span class="attribute-value">"Go to last page" </span><span class="attribute-name">rel</span>=<span class="attribute-value">"last"</span>>Last »</<span class="end-tag">a</span>></<span class="end-tag">li</span>>
</pre><pre id="line44">		
	</<span class="end-tag">ul</span>>
	</<span class="end-tag">div</span>>
</pre>


yo quiero hacer eso
usa otro widget?

saludos
KISS - Keep It Simple Stupid
ASAP-As Soon As Possible
http://www.yiiframew...oc/cookbook/71/
0

#2 User is offline   Luciano 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 134
  • Joined: 20-September 09
  • Location:Buenos Aires, Argentina

Posted 07 October 2009 - 07:36 AM

Hola, Horacio!
Lo que se me ocurre es que tal vez el form hace el submit vía POST, entonces pierde el filtro...
O sea que los datos quedan en el request sólo la primera vez.

¿Qué pasa si usás GET?
Company web site: pressEnter

Free as in "beer"...
0

#3 User is offline   gallego123 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 535
  • Joined: 11-August 09
  • Location:Argentina

Posted 07 October 2009 - 07:46 AM

View PostLuciano, on 07 October 2009 - 07:36 AM, said:

Hola, Horacio!
Lo que se me ocurre es que tal vez el form hace el submit vía POST, entonces pierde el filtro...
O sea que los datos quedan en el request sólo la primera vez.

¿Qué pasa si usás GET?


siempre teniendo en cuenta que soy nuevo en todo esto.....me animo a contestarte

al contrario, CLinkPager no usa submit
en cambio cuando uso el boton buscar, si hace submit y retorna los datos correctamente

y si, la solucion seria pasar el criterio por GET(como lo hace el sitio), pero no se como se hace
(siempre usando CLinkPager)
KISS - Keep It Simple Stupid
ASAP-As Soon As Possible
http://www.yiiframew...oc/cookbook/71/
0

#4 User is offline   Luciano 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 134
  • Joined: 20-September 09
  • Location:Buenos Aires, Argentina

Posted 07 October 2009 - 07:56 AM

Para enviar el form vía GET tenés que especificarlo en el beginForm, la firma es así

public static function beginForm($action='',$method='post',$htmlOptions=array())


O sea que el segundo argumento es el método, con lo que a vos te quedaría

echo CHtml::beginForm('', 'get');


Ahí mirá qué te genera, y en el controlador tendrías que cambiar $_POST por $_GET...
Perdoná si es muy obvio lo que te estoy diciendo...

Está bueno que estés metiendo mano para ver cómo funciona todo, pero si querés sacarlo rápido me parece que hay una extensión que sirve para ésto.
Company web site: pressEnter

Free as in "beer"...
0

#5 User is offline   gallego123 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 535
  • Joined: 11-August 09
  • Location:Argentina

Posted 07 October 2009 - 08:10 AM

View PostLuciano, on 07 October 2009 - 07:56 AM, said:

Para enviar el form vía GET tenés que especificarlo en el beginForm, la firma es así

public static function beginForm($action='',$method='post',$htmlOptions=array())


O sea que el segundo argumento es el método, con lo que a vos te quedaría

echo CHtml::beginForm('', 'get');


Ahí mirá qué te genera, y en el controlador tendrías que cambiar $_POST por $_GET...
Perdoná si es muy obvio lo que te estoy diciendo...

Está bueno que estés metiendo mano para ver cómo funciona todo, pero si querés sacarlo rápido me parece que hay una extensión que sirve para ésto.


mi problema es con ClinkPager
genera el siguiente link para ir a la pagina 4
comun/dominios/admin&page=4

y yo necesitaria que
1) haga un submit (en cuyo caso puedo recuperar los criterios)
o
2) me deje pasar ademas del nro de pagina, el criterio
comun/dominios/admin&page=4&b_dominio=BP&b_valor=&b_descripcion=&b_cod_sisa=


la idea es que el paginador se comporte como el paginador del sistio
quizas sea otro widget
KISS - Keep It Simple Stupid
ASAP-As Soon As Possible
http://www.yiiframew...oc/cookbook/71/
0

#6 User is offline   PoL 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 506
  • Joined: 05-November 08
  • Location:Buenos Aires, Argentina

Posted 07 October 2009 - 08:18 AM

Tenes que recuperar los parametros get y volver a pasarselos al CLinkPager. (los que queres agregar, ya que los otros los pone automatico)
Don't say what you think, think what you say
The problem is communication! Excess of communication!
0

#7 User is offline   gallego123 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 535
  • Joined: 11-August 09
  • Location:Argentina

Posted 07 October 2009 - 08:26 AM

View PostPoL, on 07 October 2009 - 08:18 AM, said:

Tenes que recuperar los parametros get y volver a pasarselos al CLinkPager. (los que queres agregar, ya que los otros los pone automatico)


como le paso parametros a CLinkPager?
KISS - Keep It Simple Stupid
ASAP-As Soon As Possible
http://www.yiiframew...oc/cookbook/71/
0

#8 User is offline   sebas 

  • Advanced Member
  • Yii
  • Group: Yii Dev Team
  • Posts: 496
  • Joined: 28-October 08
  • Location:Buenos Aires, Argentina

Posted 07 October 2009 - 08:45 AM

Hola Horacio,

Yo modificaría el controlador de la siguiente forma:

public function actionAdmin() {
    $this->processAdminCommand();

    $redirectParams = array();
    if (isset($_POST['b_dominio'])){
        $redirectParams['b_dominio'] = $_POST['b_dominio'];
    }
    if (isset($_POST['b_valor'])){
        $redirectParams['b_valor'] = $_POST['b_valor'];
    }
    if (isset($_POST['b_descripcion'])){
        $redirectParams['b_descripcion'] = $_POST['b_descripcion'];
    }
    if (isset($_POST['b_cod_sisa'])){
        $redirectParams['b_cod_sisa'] = $_POST['b_cod_sisa'];
    }
    if (count($redirectParams)>0){
        $this->redirect(array('admin', $redirectParams));
    }

    $conditions = array();
    $params = array();

    if  (isset($_GET['b_dominio'])) {
        $conditions[] = 'dominio like :dominio';
        $params[':dominio'] = $_GET['b_dominio'].'%';
        $criterios['b_dominio']=$_GET['b_dominio'];
    }
    if  (isset($_GET['b_valor'])) {
        $conditions[] = 'b_valor like :valor';
        $params[':valor'] = $_GET['b_valor'].'%';
        $criterios['b_valor']=$_GET['b_valor'];
    }
    if  (isset($_GET['b_descripcion'])) {
        $conditions[] = 'b_valor like :descripcion';
        $params[':descripcion'] = $_GET['b_descripcion'].'%';
        $criterios['b_descripcion']=$_GET['b_descripcion'];
    }
    if  (isset($_GET['b_cod_sisa'])) {
        $conditions[] = 'cod_sisa like :cod_sisa';
        $params[':cod_sisa'] = $_GET['b_cod_sisa'].'%';
        $criterios['b_cod_sisa']=$_GET['b_cod_sisa'];
    }
    
    $criteria = new CDbCriteria;;
    if (count($conditions)>0){
        $criteria->condition = implode(' AND ', $conditions);
        $criteria->params = $params;
    }

    $pages=new CPagination(Dominios::model()->count($criteria));
    $pages->pageSize=self::PAGE_SIZE;
    $pages->applyLimit($criteria);

    $sort=new CSort('Dominios');
    $sort->applyOrder($criteria);

    $models=Dominios::model()->findAll($criteria);

    $this->render('admin',array(
        'models'=>$models,
        'pages'=>$pages,
        'criterios'=>$criterios,
        'sort'=>$sort,
    ));
    }


Igualmente te recomendaría el uso de un CForm para el formulario y que automáticamente te genere en CDbCriteria y no necesitarías de criterios.

Saludos,
1

#9 User is offline   gallego123 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 535
  • Joined: 11-August 09
  • Location:Argentina

Posted 07 October 2009 - 09:57 AM

View Postsebas, on 07 October 2009 - 08:45 AM, said:

Hola Horacio,

Yo modificaría el controlador de la siguiente forma:

public function actionAdmin() {
    $this->processAdminCommand();

    $redirectParams = array();
    if (isset($_POST['b_dominio'])){
        $redirectParams['b_dominio'] = $_POST['b_dominio'];
    }
    if (isset($_POST['b_valor'])){
        $redirectParams['b_valor'] = $_POST['b_valor'];
    }
    if (isset($_POST['b_descripcion'])){
        $redirectParams['b_descripcion'] = $_POST['b_descripcion'];
    }
    if (isset($_POST['b_cod_sisa'])){
        $redirectParams['b_cod_sisa'] = $_POST['b_cod_sisa'];
    }
    if (count($redirectParams)>0){
        $this->redirect(array('admin', $redirectParams));
    }

    $conditions = array();
    $params = array();

    if  (isset($_GET['b_dominio'])) {
        $conditions[] = 'dominio like :dominio';
        $params[':dominio'] = $_GET['b_dominio'].'%';
        $criterios['b_dominio']=$_GET['b_dominio'];
    }
    if  (isset($_GET['b_valor'])) {
        $conditions[] = 'b_valor like :valor';
        $params[':valor'] = $_GET['b_valor'].'%';
        $criterios['b_valor']=$_GET['b_valor'];
    }
    if  (isset($_GET['b_descripcion'])) {
        $conditions[] = 'b_valor like :descripcion';
        $params[':descripcion'] = $_GET['b_descripcion'].'%';
        $criterios['b_descripcion']=$_GET['b_descripcion'];
    }
    if  (isset($_GET['b_cod_sisa'])) {
        $conditions[] = 'cod_sisa like :cod_sisa';
        $params[':cod_sisa'] = $_GET['b_cod_sisa'].'%';
        $criterios['b_cod_sisa']=$_GET['b_cod_sisa'];
    }
    
    $criteria = new CDbCriteria;;
    if (count($conditions)>0){
        $criteria->condition = implode(' AND ', $conditions);
        $criteria->params = $params;
    }

    $pages=new CPagination(Dominios::model()->count($criteria));
    $pages->pageSize=self::PAGE_SIZE;
    $pages->applyLimit($criteria);

    $sort=new CSort('Dominios');
    $sort->applyOrder($criteria);

    $models=Dominios::model()->findAll($criteria);

    $this->render('admin',array(
        'models'=>$models,
        'pages'=>$pages,
        'criterios'=>$criterios,
        'sort'=>$sort,
    ));
    }


Igualmente te recomendaría el uso de un CForm para el formulario y que automáticamente te genere en CDbCriteria y no necesitarías de criterios.

Saludos,


Gracias por el codigo, en mi situacion sirve
espero poder ayudar a otros algun dia

hay un problema

la url que genera despues del submit es algo como
index.php?r=comun/dominios/admin&0[b_dominio]=rp
y si la cambio por index.php?r=comun/dominios/admin&b_dominio=rp
funciona ok
que puede ser?

es un bug del redirect?
    public function redirect($url,$terminate=true,$statusCode=302)
    {
        if(is_array($url))
        {
            $route=isset($url[0]) ? $url[0] : '';
            $url=$this->createUrl($route,array_splice($url,1));
        }
        Yii::app()->getRequest()->redirect($url,$terminate,$statusCode);
    }


KISS - Keep It Simple Stupid
ASAP-As Soon As Possible
http://www.yiiframew...oc/cookbook/71/
0

#10 User is offline   PoL 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 506
  • Joined: 05-November 08
  • Location:Buenos Aires, Argentina

Posted 07 October 2009 - 11:57 AM

En cuanto a lo de paginación, encontré esto en el foro: quiza te sirva:
[Solved] problem with different paginations in the same tabview.
Exitos!
Don't say what you think, think what you say
The problem is communication! Excess of communication!
0

#11 User is offline   sebas 

  • Advanced Member
  • Yii
  • Group: Yii Dev Team
  • Posts: 496
  • Joined: 28-October 08
  • Location:Buenos Aires, Argentina

Posted 07 October 2009 - 03:54 PM

View PostHoracio Segura, on 07 October 2009 - 09:57 AM, said:

Gracias por el codigo, en mi situacion sirve
espero poder ayudar a otros algun dia

hay un problema

la url que genera despues del submit es algo como
index.php?r=comun/dominios/admin&0[b_dominio]=rp
y si la cambio por index.php?r=comun/dominios/admin&b_dominio=rp
funciona ok
que puede ser?

es un bug del redirect?
    public function redirect($url,$terminate=true,$statusCode=302)
    {
        if(is_array($url))
        {
            $route=isset($url[0]) ? $url[0] : '';
            $url=$this->createUrl($route,array_splice($url,1));
        }
        Yii::app()->getRequest()->redirect($url,$terminate,$statusCode);
    }





El problema esta en el redirect hice el codigo muy rápido.

en vez de ser

$this->redirect(array('admin', $redirectParams));


debe ser

$this->redirect($this->constructUrl(array('admin', $redirectParams)));


ó

$this->redirect(array_merge(array('admin'), $redirectParams));

1

#12 User is offline   gallego123 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 535
  • Joined: 11-August 09
  • Location:Argentina

Posted 08 October 2009 - 05:22 AM

Gracias por las respuestas
y por la paciencia
saludos

asi quedo
        public function actionAdmin() {
            $this->processAdminCommand();

            if(Yii::app()->request->isPostRequest) {

                $redirectParams = array();
                if (isset($_POST['b_dominio']) and !empty($_POST['b_dominio'])){
                    $redirectParams['b_dominio'] = $_POST['b_dominio'];
                }
                if (isset($_POST['b_valor']) and !empty($_POST['b_valor'])){
                    $redirectParams['b_valor'] = $_POST['b_valor'];
                }
                if (isset($_POST['b_descripcion']) and !empty($_POST['b_descripcion'])){
                    $redirectParams['b_descripcion'] = $_POST['b_descripcion'];
                }
                if (isset($_POST['b_cod_sisa']) and !empty($_POST['b_cod_sisa'])){
                    $redirectParams['b_cod_sisa'] = $_POST['b_cod_sisa'];
                }

                $this->redirect(array_merge(array('admin'), $redirectParams));

            }

            $conditions = array();
            $params = array();

            if  (isset($_GET['b_dominio']) and !empty($_GET['b_dominio'])) {
                $conditions[] = 'dominio like :dominio';
                $params[':dominio'] = $_GET['b_dominio'].'%';
                $criterios['b_dominio']=$_GET['b_dominio'];
            }
            if  (isset($_GET['b_valor']) and !empty($_GET['b_valor'])) {
                $conditions[] = 'valor like :valor';
                $params[':valor'] = $_GET['b_valor'].'%';
                $criterios['b_valor']=$_GET['b_valor'];
            }
            if  (isset($_GET['b_descripcion']) and !empty($_GET['b_descripcion'])) {
                $conditions[] = 'descripcion like :descripcion';
                $params[':descripcion'] = $_GET['b_descripcion'].'%';
                $criterios['b_descripcion']=$_GET['b_descripcion'];
            }
            if  (isset($_GET['b_cod_sisa']) and !empty($_GET['b_cod_sisa'])) {
                $conditions[] = 'cod_sisa like :cod_sisa';
                $params[':cod_sisa'] = $_GET['b_cod_sisa'].'%';
                $criterios['b_cod_sisa']=$_GET['b_cod_sisa'];
            }

            $criteria = new CDbCriteria;;
            if  (count($conditions)>0){
                $criteria->condition = implode(' AND ', $conditions);
                $criteria->params = $params;
            }
            $pages=new CPagination(Dominios::model()->count($criteria));
            $pages->pageSize=self::PAGE_SIZE;
            $pages->applyLimit($criteria);

            $sort=new CSort('Dominios');
            $sort->applyOrder($criteria);

            $models=Dominios::model()->findAll($criteria);

            $this->render('admin',array(
                'models'=>$models,
                'pages'=>$pages,
                'criterios'=>$criterios,
                'sort'=>$sort,
            ));
   }


KISS - Keep It Simple Stupid
ASAP-As Soon As Possible
http://www.yiiframew...oc/cookbook/71/
0

#13 User is offline   gallego123 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 535
  • Joined: 11-August 09
  • Location:Argentina

Posted 13 October 2009 - 07:54 AM

Hola amigos

aca dejo otra forma de hacerlo
que es con el metodo GET como me dicen Luciano Y PoL
(lo saque del foro,Search GET, es un tip que dejo el master Qiang)

<?php echo CHtml::beginForm('','get');
echo CHtml::hiddenField('r','regprof/rp_profesionales/admin') ;
?>


con esto se evita el codigo
if(Yii::app()->request->isPostRequest) {

                $redirectParams = array();
                if (isset($_POST['b_dominio']) and !empty($_POST['b_dominio'])){
                    $redirectParams['b_dominio'] = $_POST['b_dominio'];
                }
                if (isset($_POST['b_valor']) and !empty($_POST['b_valor'])){
                    $redirectParams['b_valor'] = $_POST['b_valor'];
                }
                if (isset($_POST['b_descripcion']) and !empty($_POST['b_descripcion'])){
                    $redirectParams['b_descripcion'] = $_POST['b_descripcion'];
                }
                if (isset($_POST['b_cod_sisa']) and !empty($_POST['b_cod_sisa'])){
                    $redirectParams['b_cod_sisa'] = $_POST['b_cod_sisa'];
                }

                $this->redirect(array_merge(array('admin'), $redirectParams));

            }




saludos
KISS - Keep It Simple Stupid
ASAP-As Soon As Possible
http://www.yiiframew...oc/cookbook/71/
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

6 User(s) are reading this topic
0 members, 6 guests, 0 anonymous users