如何使用Pjax Yii2仅更新搜索列表视图

时间:2016-06-03 13:49:46

标签: listview yii2 pjax

我有一个问题,当执行产品搜索整个页面刷新时,但我希望在执行搜索时只有listview被刷新,因为在左侧我正在执行其他操作,现在,当执行分页时pjax工作这里是代码和视图图像。

在_search.php

 <div class="producto-search">
<?php \yii\widgets\Pjax::begin(['timeout' => 30000, 'clientOptions' => ['container' => 'pjax-container']]); ?>

<?php $form = ActiveForm::begin([
    'action' => ['index'],
    'method' => 'get',
]); ?>
        <?php
        $rows = Producto::autocomplete();
        $data = ArrayHelper::getColumn($rows, 'NombreProducto');
        ?>
        <?= $form->field($model, 'NombreProducto',[
            'template' => '<div class="col-lg-8"><div class="input-group"><span class="input-group-addon"><i class="fa fa-search"></i></span>{input}</div></div>'
        ])
                 ->label(false)
                 ->widget(\yii\jui\AutoComplete::classname(),[
                     'model'=>$model,
                     'attribute'=>'NombreProducto',
                     'options'=>[
                     'id'=>'busqueda',
                     'class'=>'form-control'
                     ],
                     'clientOptions'=>[
                     'source'=>$data,
                     'autofill'=>true,
                     'limit'=>'10',
                     'minLength'=>'3',
                     'select' => new JsExpression("function( event, ui ) {
                     $('#NombreProducto').val(ui.item.id);
                     }")
                     ],
                     ]);?>

            <?= Html::submitButton('Buscar', ['class' => 'btn btn-primary pull-left']) ?>
    <div class="col-lg-2 pull-right">
        <?php
            echo ButtonDropdown::widget([
              'label' => 'Categorias',
              'dropdown' => [
                  'items' => [
                      ['label' => 'Alimentos y Bebidas', 'url' => '#'],
                      ['label' => 'Aseo y Hogar', 'url' => '#'],
                      ['label' => 'Bebé', 'url' => '#'],
                      ['label' => 'Cuidado en Casa', 'url' => '#'],
                      ['label' => 'Cuidado Personal', 'url' => '#'],
                      ['label' => 'Dermocosmética', 'url' => '#'],
                      ['label' => 'Maquillaje y Accesorios', 'url' => '#'],
                      ['label' => 'Mascotas', 'url' => '#'],
                      ['label' => 'Medicina Formulada', 'url' => '#'],
                      ['label' => 'Naturales', 'url' => '#'],
                      ['label' => 'Salud y Bienestar', 'url' => '#'],
                  ],
              ],
            ]);
       ?>
    </div>
<div class="form-group">

</div>

<?php ActiveForm::end(); ?>
<?php \yii\widgets\Pjax::end(); ?>

在index.php中

 <div class="col-lg-8">

        <?= $this->render('_search', ['model' => $searchModel]) ?>

      </div>

      <!--Boton de categorias-->

    </div><!--Seccion de Busqueda--><br>
    <!--Seccion de productos-->
      <div id="contenedor-productos" class="col-lg-12">
        <div class="row">
          <div class="container col-lg-12">
            <?php \yii\widgets\Pjax::begin(['timeout' => 30000, 'clientOptions' => ['container' => 'pjax-container']]); ?>

            <?=
              ListView::widget([
                'options'=>[
                  'class'=>'col-lg-12 list-wrapper inline',
                ],

                'dataProvider' => $listDataProvider,
                'itemView' => function ($model, $key, $index, $widget) {
                    $itemContent = $this->render('_tabla_producto',['model' => $model]);
                    return $itemContent;
                },
                'itemOptions' => [

                    'tag' => false,
                ],
                'summary' => '',
                'layout' => '{items}{pager}',

                'pager' => [
                    'firstPageLabel' => 'Primera',
                    'lastPageLabel' => 'Ultima',
                    'maxButtonCount' => 5,
                    'options' => [
                        'class' => 'pagination col-xs-12'
                    ]
                ],
            ]);
          ?>
            <?php \yii\widgets\Pjax::end(); ?>
          </div>
        </div>
      </div>

在VentaController.php

 public function actionIndex()
{
    if (!Yii::$app->user->isGuest /*&& Yii::$app->user->can('Cajero_Ventas_Cotizar')*/)
    {
        $model = new Producto;
        $searchModel = new ProductoSearch();
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
        $modelCliente=new Cliente;
        $cliente = Cliente::getClientes();
        $rows = Producto::autocomplete();//Se envia la variable que contiene los productos a la vista
            return $this->render('index', array('rows'=>$rows,'model' => $model,'modelC'=>$modelCliente, 'searchModel' => $searchModel,'clientes'=>$cliente, 'listDataProvider' => $dataProvider));

    }else{
        return $this->render('//site/error', array('name' => '403 Acceso Denegado' , 'message' => "Usted no tiene permisos para realizar la accion."));
    }
}

view

1 个答案:

答案 0 :(得分:2)

我通过添加属性

修复了它
  'options' => ['data-pjax' => true ],

到ActiveForm组件