运行Yii2 kartik导出扩展时出现问题


Problems while running Yii2 kartik Export Extension

我是Yii的新手,正在开发一个从MySQL读取表的数据库应用程序。我需要用户能够将数据导出为CSV或PDF,所以我下载了Kartik Yii2导出扩展。我不知道我应该如何配置我的设置来运行这个扩展,我读了指南,但我不知道如何修复这个错误:

无效配置–yii''base''InvalidConfigException"query"属性必须是实现QueryInterface的类的实例,例如yii''db''query或其子类。

这是我的代码:

型号/工业.php:

<?php
namespace app'models;
use yii'db'ActiveRecord;
class Industrial extends ActiveRecord
{
}

controller/InIndustrialController.php:

<?php
namespace app'controllers;

use yii'web'Controller;
use yii'data'Pagination;
use app'models'industrial;
use yii'data'ActiveDataProvider;
class IndustrialController extends Controller
{

public function actionIndex()
{
$dataProvider=new ActiveDataProvider('Industrial', array(
'pagination'=>array(
'pageSize'=>20,
),
));
$query = industrial::find();
$pagination = new Pagination([
'defaultPageSize' => 20,
'totalCount' => $query->count(),
]);
$industrials = $query->orderBy('Company_Name')
->offset($pagination->offset)
->limit($pagination->limit)
->all();


return $this->render('index', [
'industrials' => $industrials,
'pagination' => $pagination,
'dataProvider'=>$dataProvider,
]);

}
}

views/industry/index.php:

<?php
use yii'helpers'Html;
use yii'widgets'LinkPager;
?>
<h1>Industrial Companies</h1>
<ul>
<?php
use kartik'export'ExportMenu;
use kartik'grid'GridView;
$gridColumns = [
['class' => 'yii'grid'SerialColumn'],
'id',
'name',
[
'attribute'=>'Name',
'label'=>'Name',
'vAlign'=>'middle',
'width'=>'190px',
'value'=>function ($model, $key, $index, $widget) { 
return Html::a($model->Name, '#', []);
},
'format'=>'raw'
],
'Name',
'Location',
'Telephone',
];
echo ExportMenu::widget([
'dataProvider' => $dataProvider,
'columns' => $gridColumns,
'fontAwesome' => true,
'dropdownOptions' => [
'label' => 'Export All',
'class' => 'btn btn-default'
]
]) . "<hr>'n".
GridView::widget([
'dataProvider' => $dataProvider,
'columns' => $gridColumns,
'export' => [
'fontAwesome' => true,
]
]);

$array = (array) $industrials;

function build_table($array){
// start table
$html = '<table class="altrowstable" id="alternatecolor">';
// header row
$html .= '<tr>';
foreach($array[0] as $key=>$value){
$html .= '<th>' . $key . '</th>';
}
$html .= '</tr>';
// data rows
foreach( $array as $key=>$value){
$html .= '<tr>';
foreach($value as $key2=>$value2){
$html .= '<td>' . $value2 . '</td>';
}
$html .= '</tr>';
}
// finish table and return it
$html .= '</table>';
return $html;
}

echo build_table($array);
?>

<?= LinkPager::widget(['pagination' => $pagination]) ?>

请帮帮我。

在activeDataProvider 的配置中

我没有看到分配给密钥"查询"的值,如以下

 $ dataProvider = new ActiveDataProvider ([ 
      'query' => Post :: find (),
      'pagination' => [
      'pageSize' => 20,
      ],
 ]);

使用以下进行测试

actionIndex public function ()
{
    $ dataProvider = new ActiveDataProvider ('Industrial', array (
        'query' => Industrial :: find (),
        'pagination' => array (
        'pageSize' => 20,
        ),
    ));

似乎有一个错误代码你应该写:

$ query = Industrial :: find (); 

而不是

$ query = industrial :: find ();

工业类以大写开头

将其添加到Yii2文件夹中config/web.php中的组件下,它将运行

'modules' => [
        'gridview' => [
            'class' => ''kartik'grid'Module',
            ],
         ],