2014-04-09 2 views
2

Я очень новичок в Yii и PHP, и у меня есть вопрос.-Yii- Обновить списокView by AJAX

Мне нужно, чтобы listView обновлялся с помощью фильтрации ajax из раскрывающегося списка, и он работает нормально, но проблема заключается в разбивке на страницы. Я фильтрую результаты в контроллере и передаю dataProvider в представление, чтобы изменить listView, но когда y меняет страницу из paginator, она снова отображает все результаты вместо отфильтрованных результатов.

Вот код, у меня есть:

Вид (prueba.php):

<?php 
echo CHtml::beginForm(); 

echo CHtml::dropdownList('comunidades',$comunidad,$comunidades, 
      array('empty'=>'- -') 
    ); 
echo CHtml::submitButton("Enviar"); 
echo CHtml::endForm(); 

$this->widget('zii.widgets.CListView', 
    array(
     'itemView'=>'lista', 
     'dataProvider'=>$provider_ciudades, 
     'id'=>'id_lista_ciudades', 
    ) 
); 

Yii::app()->clientScript->registerScript('items_update', "$('#category_id').change(function(){ 
    $.fn.yiiListView.update('id_lista_ciudades', { 
      data: $(this).serialize(), 
     } 
    ); 
}); 
return false;", 
CClientScript::POS_READY);?> 

Контроллер (действие, которое оказывает вид):

public function actionprueba(){ 
    if($_POST['comunidades'] != null) 
     $comunidad = $_POST['comunidades']; 
    else 
     $comunidad = ''; 

    $criteria_comunidades = new CDbCriteria(); 
    $criteria_comunidades->select="comunidad"; 
    $res_comunidades = Ciudad::model()->findAll($criteria_comunidades); 
    if($res_comunidades != null) 
     $comunidades = CHtml::listData($res_comunidades,'comunidad','comunidad'); 
    else 
     $comunidades = null; 

    $criteria_ciudades = new CDbCriteria();//Creiteria para la busqueda de las ciudades. 

    if(strlen($comunidad) > 0) 
     $criteria_ciudades->addCondition("comunidad='$comunidad'");//Condicion de comunidad. 

    $provider_ciudades = new CActiveDataProvider('Ciudad', 
     array(
      'pagination'=>array(
       'pageSize'=>3, 
      ), 
      'criteria'=>$criteria_ciudades 
     ) 
    ); 

    $this->render('prueba', 
     array(
      'comunidades' => $comunidades, 
      'provider_ciudades' => $provider_ciudades, 
      'comunidad' => $_POST['comunidades'], 
     ) 
    ); 
} 

Спасибо за любую помощь :)

ответ

0

Хорошо, я решил, мне нужно было новое действие для POST-данных от prueba.php и изменил submitButton на ajaxSubmitButton и заменил listView на ajax.

Смежные вопросы