如何在yii2 gridview中显示json数据 [英] how to show json data in yii2 gridview

查看:21
本文介绍了如何在yii2 gridview中显示json数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在 gridview 中显示 json 数据.我在控制台窗口中获取数据.我想在 gridview.how 中显示.下面给出代码

I want to display json data in gridview.I get data in console window. and I want to display in gridview.how to do that. below givencode

在控制器中

public function actionCompanyinfo(){     

    $text_in_search = $_GET['text_in_search'];
    $left_items_cat = ltrim($_GET['left_items_cat']);

    if($left_items_cat == "Companies"){

         $query = (new \yii\db\Query())
                ->select(['c.name', 'c.id'])
                ->from(['companies as c'])
                ->where('c.name LIKE :query') 
                ->addParams([':query'=>'%'.$text_in_search.'%'])
                ->all(); 

        $response['comapnies_matching'] = $query;
            return \yii\helpers\Json::encode([
        $response
    ]);  

    }
}

正在查看

$form = ActiveForm::begin();
 $typeahead = $form->field($model, 'name')->textInput(['maxlength' => true]);

$getinfobtn = Html::SubmitButton( 'Get info', [ 'class' => 'btn btn-success' , 'id' =>'getinfo']) ;
   ActiveForm::end();  

在 Js 文件中

$("#getinfo").click(function(){
        var text_in_search = $("#companies-name").val();
        var left_items_cat = $('#left-items li.active').text();
        var url = "index.php?r=companies/companyinfo";

        $.ajax({
        url: url,
        dataType: 'json',
        method: 'GET',
        data: {text_in_search,left_items_cat},
        success: function (data, textStatus, jqXHR) {           
             // $( "#country"+id ).html(data[0].countries);
             console.log(data[0]);
           // **want to show this data in yii2 grid view**
        },
        error: function (jqXHR, textStatus, errorThrown) {
            console.log('An error occured!');
            alert('Error in ajax request');
        }
    });

console.log

comapnies_matching
:
Array(3)
0
:
{name: "ADC Therapeutics Sarl", id: "402"}
1
:
{name: "ADC Therapeutics Sarl", id: "407"}
2
:
{name: "ADC Therapeutics Sarl", id: "412"}

在控制台窗口中,我获得了所需的输出,但我希望它在网格视图中显示该数组..怎么做?

In console window I get required output but I want it to display that array in grid view .. how to do that?

推荐答案

您可以通过使用框架的 Pjax 小部件来实现.

You can achive this by using Pjax widget of the framework.

在您看来:(如果您不使用模型,请不要使用 ActiveForm)

In your view: (if you not use model don't use ActiveForm)

<?php
use yii\helpers\Html;
use yii\grid\GridView;
use yii\widgets\Pjax;

//Get active filters from request GET
$get = Yii::$app->request->get();
$name = isset($get['name']) ? $get['name'] : '';
$left_items_cat = isset($get['left_items_cat']) ? $get['left_items_cat'] : '';
?>

<?php Pjax::begin(); ?>
<?= Html::beginForm(['companies/companyinfo'], 'get', ['data-pjax' => '',]); ?>
<?= Html::dropDownList('left_items_cat', $left_items_cat,
    ['' => '', 'Companies' => 'Companies', 'Other' => 'Other'], ['class' => 'form-control']) ?>
<?= Html::input('text', 'name', $name, ['class' => 'form-control']) ?>
<?= Html::submitButton('Get Info', ['class' => 'btn btn-success', 'name' => 'getInfo']) ?>
<?= Html::endForm() ?>
<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        'id',
        'name',
    ],
]); ?>
<?php Pjax::end(); ?>

在你的控制器中:

public function actionCompanyinfo()
{
    // Init DataProvider empty
    $dataProvider = new ArrayDataProvider(['allModels' => []]);
    // Manage the params send in request GET
    $text_in_search = $_GET['name'];
    $left_items_cat = ltrim($_GET['left_items_cat']);

    if ($left_items_cat == "Companies") {
        // Query rows and populate DataProvider
        $query = (new \yii\db\Query())
            ->select(['c.name', 'c.id'])
            ->from(['companies as c'])
            ->where('c.name LIKE :query') 
            ->addParams([':query'=>'%'.$text_in_search.'%'])
            ->all();

        $dataProvider->allModels = $query;
    }

    return $this->render('view', ['dataProvider' => $dataProvider]);
}

这篇关于如何在yii2 gridview中显示json数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆