2015-02-23 44 views
0

我是Yii的新手,我正在開發一個從MySQL讀取表的數據庫應用程序。我需要用戶能夠將數據導出爲CSV或PDF格式,因此我下載了Kartik Yii2 Export Extension。我不知道如何配置我的設置來運行此擴展,我閱讀指南,但我不知道如何解決此錯誤:運行Yii2 kartik導出擴展的問題

無效配置 - yii \ base \ InvalidConfigException 「查詢「屬性必須是實現QueryInterface的類的一個實例,例如yii \ db \ Query或其子類。

這是我的代碼:

型號/ industrial.php:

<?php 

namespace app\models; 

use yii\db\ActiveRecord; 

class Industrial extends ActiveRecord 
{ 
} 

控制器/ IndustrialController.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, 
]); 



} 
} 

視圖/工業/ 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]) ?> 

請 幫我。

回答

1

開始在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, 
     ), 
    )); 
0

似乎有一個錯誤代碼 你應該寫:

$ query = Industrial :: find(); 

,而不是

$ query = industrial :: find(); 

工業類用大寫

+0

謝謝,我改變了它,但它不起作用,仍然給出了同樣的錯誤! – user3640056 2015-02-23 11:31:59

+0

我仍然收到同樣的錯誤,請幫助。 – user3640056 2015-02-24 10:11:09

+0

--------------- – scaisEdge 2015-02-24 21:32:05

0

下配置組件添加此鍵 '查詢'/ web.php在Yii2文件夾,它會工作

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