繁体   English   中英

未找到Yii类CActiveDataProvider

[英]Yii Class CActiveDataProvider not found

我是Yii的新手,运行小部件时遇到此错误“找不到类'app \\ controllers \\ CActiveDataProvider'”。

这是我的代码:

models / industrial.php:

<?php

namespace app\models;

use yii\db\ActiveRecord;

class Industrial extends ActiveRecord
{
}

controllers / IndustrialController.php:

<?php

namespace app\controllers;

use yii\web\Controller;
use yii\data\Pagination;
use app\models\industrial;


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 / industrial / 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]) ?>

这里有什么问题? 请你帮助我好吗?

我解决了在控制器的开头添加此内容的问题:

use yii\data\ActiveDataProvider;

我相信您的问题是由您使用命名空间引起的,Yii 1.1并未使用该命名空间。 因为您CActiveDataProvider命名空间声明为app/controllers ,所以将在该命名空间内而不是在全局命名空间中查找CActiveDataProvider 具体来说,它正在app / controllers目录中寻找类文件。

要解决此问题,请尝试将类引用为\\CActiveDataProvider以使其使用Yii的自动加载器查找该类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM