Невозможно установить частичное представление на моей странице индекса yii2 - PullRequest
2 голосов
/ 21 апреля 2020

Я пытаюсь визуализировать частичное представление на index page, чтобы показать график, когда определенное условие выполняется, выполнив следующие действия.

Индекс. php

<?PHP
.
.
.
.
else if($type == "403")
{

    $columns = [
        ['class' => 'yii\grid\SerialColumn'],

        'Device_ID',
        'Customer_ID',
        'MSN',
        'kWh',
        'Data_Date_Time',


    ];
    $this->render('_kwhChart', [
        'dataProvider' => $dataProvider,
    ]) ;
}
.
.
.
.
?>
 <?=
GridView::widget([
    'dataProvider' => $dataProvider,
    //'filterModel' => $searchModel,
    'columns' => $columns
]);
?>

Когда определенное условие выполняется, я могу видеть обновленные значения gridview, но не частичное представление, т. Е. График.

Просмотр пациента

<?PHP
  $dataPointskWh = array();
  $model = $dataProvider->getModels();

  foreach ($model as $row)
  {
    // pushing for kwh values
    array_push($dataPointskWh, 
    array("label"=>$row['Data_Date_Time'],"y"=>$row['kWh']));
  }

  ?>
            <div id="chartContainer1" style="width: 100%; height: 300px;display: inline-block;"></div>

 <script>
   var chart1 = new CanvasJS.Chart("chartContainer1", {
     exportEnabled: true,
    animationEnabled: true,
     zoomEnabled: true,
     theme: "light1",
    title:{
        text: "Voltages"
    },
    legend:{
        cursor: "pointer",
        verticalAlign: "bottom",
        horizontalAlign: "center",
        itemclick: toggleDataSeries
    },
    data: [
        {
        type: "column",
            lineColor:"red",
            legendMarkerColor: "red",
        name: "kWh",
        indexLabel: "{y}",
        //yValueFormatString: "V1#0.##",
        showInLegend: true,
        dataPoints: <?php echo json_encode($dataPointskWh, JSON_NUMERIC_CHECK); ?>
    }
    ]

});
 chart1.render();


function toggleDataSeries(e){
    e.dataSeries.visible = !(typeof (e.dataSeries.visible) === "undefined" || e.dataSeries.visible);
    chart1.render();

}

Примечание: я использую кнопку отправки, и страница каждый раз обновляется sh когда нажата кнопка отправки.

Как этого добиться?

Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 23 апреля 2020

Вы не визуализируете рендер () .. вам нужно .. echo

echo  $this->render('_kwhChart', [
    'dataProvider' => $dataProvider,
]) ;

или

<?= $this->render('_kwhChart', ['dataProvider' => $dataProvider, ]) ?>;
...