在yii2

时间:2015-12-10 09:27:32

标签: web frameworks yii2 crud

我在yii2后端从表名" Guru"做了一个简单的CRUD,我已经使用相同的表制作模型并制作CRUD但是当我尝试从Create函数创建新数据时,数据根本没有保存在数据库中,我已经使代码与前端类似并更改了命名空间,但它在后端根本没有用。

这是我的后端" Guru"模型代码

<?php 
 namespace backend\models;
 use Yii;
 class Guru extends \yii\db\ActiveRecord
{
/**
 * @inheritdoc
 */
public static function tableName()
{
    return 'guru';
}

/**
 * @inheritdoc
 */
public function rules()
{
    return [
        [['nip', 'nama_guru', 'ttl', 'jenis_kelamin', 'alamat', 'telp', 'agama', 'jabatan', 'user', 'pass', 'role', 'tgl_create', 'update_create', 'mapel'], 'required'],
        [['jenis_kelamin'], 'string'],
        [['mapel'], 'integer'],
        [['nip', 'telp', 'jabatan', 'user', 'pass'], 'string', 'max' => 20],
        [['nama_guru', 'ttl'], 'string', 'max' => 30],
        [['alamat'], 'string', 'max' => 50],
        [['agama', 'role', 'tgl_create', 'update_create'], 'string', 'max' => 10]
    ];
}

/**
 * @inheritdoc
 */
public function attributeLabels()
{
    return [
        //'id_guru' => 'Id Guru',
        'nip' => 'NIP',
        'nama_guru' => 'Nama Guru',
        'ttl' => 'Tempat Tanggal Lahir',
        'jenis_kelamin' => 'Jenis Kelamin',
        'alamat' => 'Alamat',
        'telp' => 'No Telpon',
        'agama' => 'Agama',
        'jabatan' => 'Jabatan',
        'user' => 'User',
        'pass' => 'Pass',
        'role' => 'Role',
        'tgl_create' => 'Tgl Create',
        'update_create' => 'Update Create',
        'mapel' => 'Mata Pelajaran',
    ];
}
      /**
 * @return  \yii\db\ActiveQuery
 */
public function getJadwalGuru() {
    return $this->hasMany(Jadwal::className(), ['id_mapel'=>'mapel']);
}
  public function getJadwal() {
    return $this->hasMany(Jadwal::className(), ['nip'=>'id_guru']);
}

}

这是我的控制器代码

namespace backend\controllers;

use Yii;
use backend\models\Guru; 
use backend\models\GuruSearch;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;  
public function actionCreate()
{
    $model = new Guru();

    if ($model->load(Yii::$app->request->post()) && $model->save()) {
        return $this->redirect(['view', 'id' => $model->id_guru]);
    } else {
        return $this->render('create', [
            'model' => $model,
        ]);
    }
}

我真的不知道为什么它在后端和前端的其他CRUD工作时不起作用。我是这个框架的新手,请帮助我。

1 个答案:

答案 0 :(得分:1)

可能是验证问题, 您有很多required字段,如果缺少某个字段,则不会保存该模型。

为了评估这种情况,请尝试使用save(false)false mean而不进行模型验证。这样:

 public function actionCreate()
 {
    $model = new Guru();

    if ($model->load(Yii::$app->request->post()) && $model->save(false)) {
       return $this->redirect(['view', 'id' => $model->id_guru]);
    } else {
       return $this->render('create', [
           'model' => $model,
       ]);
    }
}

如果保存模型false,则选择性地(通过注释)检查创建验证问题的规则。