2017-08-02 6 views
0

J'ai vérifié beaucoup d'exemples sur google et fais la même chose comme ça mais je ne peux pas encore avoir de chance. Toutes les fonctionnalités sont traitées comme le tri et la pagination, mais seul le champ id est affiché à la place de tous. Voici mes ressources.Pjax Gridview n'affiche pas les données dans yii2 avancé

Contrôleur.

<?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, 
     ]); 
    } 
} 
?> 

Modèle

<?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(); 
    } 

vue

<?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 afficher uniquement id champ et un autre domaine qui affiche comme (not set). S'il vous plaît aidez-moi :(

Répondre

1

Supprimer les attributs:

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

De votre modèle Ne pas les remplacer, Yii2 les détectera automatiquement à partir du tableau Après avoir retiré - ils apparaîtront dans votre GridView

+0

... –

+1

Les attributs d'enregistrement actif sont nommés en respectant les majuscules et les minuscules, et Yii définit automatiquement un attribut dans Active Record pour chaque colonne de la table associée. attributs pour éviter de telles choses. – Yupik