2017-08-02 107 views
0

我已经检查了很多谷歌的例子,并做了类似的,但不能得到运气呢。 所有功能都像排序和分页一样工作,但只有id字段显示,而不是全部显示。这是我的资源。Pjax Gridview不显示yii2高级数据

控制器。

<?php 
namespace frontend\controllers; 

use Yii; 
use yii\base\InvalidParamException; 
use yii\web\BadRequestHttpException; 
use yii\web\Controller; 
use yii\filters\VerbFilter; 
use yii\filters\AccessControl; 
use frontend\models\StudentForm; 
//use frontend\models\GridData; 

use yii\data\ActiveDataProvider; 
class StudentController extends Controller 
{ 

    public function actionIndex() 
    { 
     $productsProvider = new ActiveDataProvider([ 
      'query' => StudentForm::find(), 
      'pagination' => [ 
       'pageSize' => 5, 
      ] 

     ]); 
     return $this->render('index', [ 
      // 'searchModel' => $searchModel, 
      'dataProvider' => $productsProvider, 
     ]); 
    } 
} 
?> 

模型

<?php 
namespace frontend\models; 
use yii\base\Model; 

class StudentForm extends \yii\db\ActiveRecord 
{ 
    public $firstname; 
    public $lastname; 
    public $email; 
    public $phone; 


    public static function tableName() 
    { 
     return 'student'; 
    } 

    public function rules() 
    { 
     return [ 
      ['firstname','trim'], 
      ['firstname','required'], 
      ['lastname','trim'], 
      ['lastname','required'], 
      ['email','trim'], 
      ['email','required'], 
      ['phone','trim'], 
      ['phone','required'], 
     ]; 
    } 

    public function getAll() 
    { 
     return static::find()->indexBy('id')->all(); 
    } 

视图

<?php 
use yii\helpers\Html; 
use yii\grid\GridView; 
use yii\widgets\Pjax; 
?> 
<div class="php-version-index"> 
    <h1><?= Html::encode($this->title) ?></h1> 
    <h2>PHP Versions</h2> 
    <?phpPjax::begin(); ?> 
    <?= GridView::widget([ 
     'dataProvider' => $dataProvider, 
     'columns' => [ 
      ['class' => 'yii\grid\SerialColumn'], 
      'id', 
      'firstname', 
      'lastname', 
      'email', 
      [ 
       'class' => 'yii\grid\ActionColumn', 
      ] 
     ], 
    ]); ?> 
    <?php Pjax::end(); ?> 

的GridView只显示id领域和其他领域的显示像(not set)。请帮我:(

回答

1

删除属性:

public $firstname; 
public $lastname; 
public $email; 
public $phone; 

从你的模型不要忽略他们,Yii2将自动从表中检测到它们取出后 - 他们会出现在你的GridView

+0

。这是工作,但为什么他们被覆盖? –

+1

活动记录属性是以区分大小写的方式在关联的表列之后命名的,Yii自动为活动记录中关联表的每一列定义一个属性,不应该重新声明任何属性来避免这种事情。 – Yupik