我是yii的新人,并试图找到自己的方式。我做了一两个教程。然后我决定开始编辑/更改示例以便让我了解更多信息。我创建了一个简单的PING页面。这得到了验证。成功时,它会加载一个静态页面。这一切都有效。
接下来我要做的是看看我如何利用网格来填充一些数据。我的现实生活中的例子是一样的。我将收到一系列数据。
似乎CArrayDataProvider是我需要的。所以,我想尝试一个非常简单的例子。如果我让这个工作,我可以继续前进。
我尝试了很多例子。每次错误都是一样的。好像我没有安装CArrayDataProvider?如果可能的话。
我做了标准的基本安装:
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
我在控制器文件的开头有以下内容:
use yii2\data\ArrayDataProvider;
我这里没有错误。 我在文件系统上搜索文件本身,找不到它。我确实找到了ArrayDataProvider,所以我尝试了,结果相同:
use vendor\yiisoft\yii2\data\ArrayDataProvider;
错误是:
PHP Fatal Error – yii\base\ErrorException
Class 'CArrayDataProvider' not found
这是第24行:
"dataProvider = new CArrayDataProvider($fruits);"
这是我的示例代码。不是我认为这个问题在这里,而是为了表明我想要做的事情:
$fruits = array(
array('id' => 1, 'name'=>'apple', 'color' => 'green'),
array('id' => 2, 'name'=>'orange', 'color' => 'orange'),
array('id' => 3, 'name'=>'banana', 'color' => 'yellow'),
array('id' => 4, 'name'=>'pineapple', 'color' => 'brown')
);
$dataProvider = new CArrayDataProvider($fruits);
$this->widget('zii.widgets.grid.CGridView', array(
'id' => 'fruits-grid',
'dataProvider' => $dataProvider ,
'columns' => array(
array(
'name' => 'ID',
'value' => '$data["id"]',
),
array(
'name' => 'Name',
'value' => '$data["name"]'
),
array(
'name' => 'Color',
'value' => '$data["color"]'
),
)
));
在文件系统(linux)本身,我做了更新:
composer update
过去2天我一直在谷歌搜索,我什么也没找到。
我尝试添加日期纠察队。那很有效。我用了: https://www.tutorialspoint.com/yii/yii_extensions.htm
简而言之,我调用的静态页面现在显示一个DateTimePicker。
在文件开头我添加了:
use kartik\datetime\DateTimePicker;
在身体里:
<?php
echo DateTimePicker::widget([
'name' => 'dp_1',
'type' => DateTimePicker::TYPE_INPUT,
'value' => '23-Feb-1982 10:10',
'pluginOptions' => [
'autoclose'=>true,
'format' => 'dd-M-yyyy hh:ii'
]
]);
?>
如何让yii2允许我使用ArrayDataProvider。或者我如何安装扩展程序?或者我参考谁?
答案 0 :(得分:1)
在Yii2中,没有CArrayDataProvider
。使用ArrayDataProvider
,如文档中所述:
$provider = new yii\data\ArrayDataProvider([
'allModels' => $query->from('post')->all(),
'sort' => [
'attributes' => ['id', 'username', 'email'],
],
'pagination' => [
'pageSize' => 10,
],
]);
记录良好here。
答案 1 :(得分:0)
Yii2支持ArrayDataProvider
和yii 1. *支持CArrayDataProvider,因此根据您的代码使用Yii2,所以只需用
$dataProvider = new CArrayDataProvider($fruits);
有了这个:
$dataProvider = new ArrayDataProvider($fruits);
答案 2 :(得分:0)
感谢每个人的帮助!我现在有一个有效的例子。
如果其他人有同样的问题,我会在这里发布我的工作代码:
use kartik\grid\GridView;
$resultData = [
array("id"=>1,"name"=>"Cyrus","email"=>"risus@consequatdolorvitae.org"),
array("id"=>2,"name"=>"Justin","email"=>"ac.facilisis.facilisis@at.ca"),
array("id"=>3,"name"=>"Mason","email"=>"in.cursus.et@arcuacorci.ca"),
array("id"=>4,"name"=>"Fulton","email"=>"a@faucibusorciluctus.edu"),
array("id"=>5,"name"=>"Neville","email"=>"eleifend@consequatlectus.com"),
array("id"=>6,"name"=>"Jasper","email"=>"lectus.justo@miAliquam.com"),
array("id"=>7,"name"=>"Neville","email"=>"Morbi.non.sapien@dapibusquam.org"),
array("id"=>8,"name"=>"Neville","email"=>"condimentum.eget@egestas.edu"),
array("id"=>9,"name"=>"Ronan","email"=>"orci.adipiscing@interdumligulaeu.com"),
array("id"=>10,"name"=>"Raphael","email"=>"nec.tempus@commodohendrerit.co.uk"),
];
$dataProvider = new \yii\data\ArrayDataProvider([
'key'=>'id',
'allModels' => $resultData,
'sort' => [
'attributes' => ['id', 'name', 'email'],
],
]);
echo GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'id',
[
'attribute' => 'name',
'value' => 'name',
],
[
"attribute" => "email",
'value' => 'email',
]
]
]);