我是Yii的新手,在运行小部件时收到错误"找不到class\app\controllers\CActivitDataProvider'"。
这是我的代码:
models/industry.hp:
<?php
namespace appmodels;
use yiidbActiveRecord;
class Industrial extends ActiveRecord
{
}
controllers/IndustrialController.php:
<?php
namespace appcontrollers;
use yiiwebController;
use yiidataPagination;
use appmodelsindustrial;
class IndustrialController extends Controller
{
public function actionIndex()
{
$dataProvider=new CActiveDataProvider('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 yiihelpersHtml;
use yiiwidgetsLinkPager;
?>
<h1>Industrial Companies</h1>
<ul>
<?php
use kartikexportExportMenu;
use kartikgridGridView;
$gridColumns = [
['class' => 'yiigridSerialColumn'],
'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]) ?>
这里有什么问题?你能帮帮我吗?
我解决了在控制器开始时添加以下内容的问题:
use yiidataActiveDataProvider;
我认为您的问题是由您使用的名称空间引起的,Yii 1.1没有使用名称空间。因为您将名称空间声明为app/controllers
,所以在该名称空间中查找CActiveDataProvider
,而不是在全局名称空间中;具体来说,它在app/controllers目录中查找类文件。
要解决此问题,请尝试将该类引用为CActiveDataProvider
,使其使用Yii的自动加载器查找该类。