2016-05-11 14 views
1

Neu zu Yii2 und lernen Sie einige Demo von Tutorials, versuchen, Code zu kopieren und auf meiner eigenen Demo zu verwenden, aber scheinen nicht zu funktionieren. Hier ist der Code:Neuling - Yii2: Kann keine Daten anzeigen von Controller

Tutorial - Controller:

namespace app\controllers; 
use yii\web\Controller; 

use app\models\Article; 
use Yii; 

class ArticleController extends Controller{ 

    public function actionIndex(){ 

     $article = Article::find(); 

     //echo $article->count(); 

     $pagination = new \yii\data\Pagination(['totalCount'=>$article->count(), 'pageSize'=>3]); 
     $data = $article->offset($pagination->offset)->limit($pagination->limit)->all(); 
     //print_r($data); 

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

Tutorial - Ausblick:

<?php 

    use yii\helpers\Url; 

?> 
<p style = "text-align:right"> 
    <a href="<?=Url::to(['add'])?>" class="btn btn-primary">ADD</a> 
</p> 


<table class="table table-hover"> 
    <tr> 
     <th>id</th><th>Title</th><th>Count</th><th>Status</th><th>Update Time</th><th>By</th> 
    </tr> 
    <?php print_r($data); foreach($data as $v){?> 
    <tr> 
     <td><?=$v->id?></td><td><?=$v->title?></td><td><?=$v->count?></td><td><?=($v->status == '1' ? 'Y' :'N')?></td> 
     <td><?=date("Y-m-d H:i:s",$v->update_date)?></td> 
     <td><a href="<?=Url::to(['edit', 'id'=>$v->id])?>">Edit</a> | <a href="<?=Url::to(['delete','id'=>$v->id])?>">Del</a></td> 
    </tr> 
    <?php }?> 
</table> 

<div style="float:right"> 
    <?=\yii\widgets\LinkPager::widget([ 
     'pagination' => $pagination, 
     'options' =>[ 
      'class' =>'pagination', 
      ], 
     ]) 
    ?> 
</div> 

Verwenden print_r ($ data), und es zeigt unter:

Array ([0] => app\models\Article Object ([_attributes:yii\db\BaseActiveRecord:private] => Array ([id] => 1 [flag] => 0 [title] => 13123OOOO [description] => tttt1 [content] => tstsets 
[count] => 1 [status] => 1 [update_date] => 1462291610 [date] => 0) [_oldAttributes:yii\db\BaseActiveRecord:private] => Array ([id] => 1 [flag] => 0 [title] => 13123OOOO 
[description] => tttt1 [content] => tstsets [count] => 1 [status] => 1 [update_date] => 1462291610 [date] => 0) [_related:yii\db\BaseActiveRecord:private] => Array () 
[_errors:yii\base\Model:private] => [_validators:yii\base\Model:private] => [_scenario:yii\base\Model:private] => default [_events:yii\base\Component:private] => Array () 
[_behaviors:yii\base\Component:private] => Array ()) 

Aber auf meinem eigenen Code: Controller:

namespace app\controllers; 
use yii\web\Controller; 

use app\models\Inventory; 

class InventoryController extends Controller{ 

    public function actionIndex(){ 

     //$inventory = new Inventory(); 
     $inventory = Inventory::find()->asArray()->all(); 
     print_r($inventory); 

     return $this->renderpartial('index',['inventory' => $inventory]); 
    } 

Ausblick:

<?php 
use yii\helpers\Html; 
use yii\helpers\Url; 

echo "<br>"; 
print_r($inventory); 
?> 
<h2>Inventory Status</h2> 
<table class = "table table-hover"> 
    <tr> 
     <th>ID</th><th>Model</th><th>Office</th><th>Warehouse</th> 
    </tr> 
    <tr> 
     <?php foreach($inventory as $item){ ?> 
     <tr> 
      <td><?=$item->id ?></td><td><?=$item->name ?></td><td><?=$item->office ?></td><td><?=$item->warehouse ?></td> 
     </tr> 
     <?php }?> 
    </tr> 
    <tr> 
     <td>?<td>Apple</td><td>1</td><td>2</td> 
    </tr> 
</table> 

Mein print_r ($ Inventar) ist wie folgt:

Array ([0] => Array ([id] => 1 [name] => Apple [office] => 1 [warehouse] => 2) [1] => Array ([id] => 2 [name] => Android [office] => 2 [warehouse] => 1)) 

Und verwenden foreach() {} kann aber keine Daten zeigen, wie man das Problem lösen?

+0

Bevor das heiße Wasser entdecken oder die weel ein weiteres Mal, wenn ich Sie Nutzungs Gii vorschlagen erfinden das Ergebnis Standardcode crud MVC zum Erzeugen und sehen. .avoiding so viel Arbeit http://www.yiiframework.com/doc-2.0/guide-start-gii.html – scaisEdge

+0

Ich möchte foreach() anstelle von Gridview auf meiner Demo verwenden, aus dem verständlichsten was ich habe gelernt, die Gii verwendet viele eingebaute Widgets, die nicht meine bisher bevorzugte. – newbrant

+0

Sie erhalten Daten 'asArray()' und greifen auf sie als Objekt zu ('$ item-> id')! Versuchen Sie den '-> asArray()' Teil von Ihrem Controller zu entfernen. Wenn das nicht funktioniert, fügen Sie Ihre Fehlermeldung hinzu, die Sie bei der Frage erhalten. – leninhasda

Antwort

0

In Ihrem Code haben Sie eine verschachtelte tr (versuchen zu entfernen)

<table class = "table table-hover"> 
    <tr> 
     <th>ID</th><th>Model</th><th>Office</th><th>Warehouse</th> 
    </tr> 

     <?php foreach($inventory as $item){ ?> 
     <tr> 
      <td><?=$item['id'] ?></td><td><?=$item['name'] ?></td><td><?=$item['office'] ?></td><td><?=$item['warehouse'] ?></td> 
     </tr> 
     <?php }?> 

    <tr> 
     <td>?<td>Apple</td><td>1</td><td>2</td> 
    </tr> 
</table> 
+0

hi, entfernt und das gleiche Problem, jede andere Idee, die Sie meinen Code falsch? – newbrant

+0

Wenn Sie die Daten von asArray erhalten dann versuchen Sie, wie ein Array und nicht wie ein Objekt zugreifen .. Ich habe die Antwort zu aktualisieren – scaisEdge

Verwandte Themen