Yii2仅验证创建操作

时间:2015-04-04 16:52:34

标签: yii2

现在在我的模型中有一个像这样的验证规则

 [['title'], 'required'],

但它在创建和更新操作上都进行了验证。 我想要做的只是仅对创建操作进行验证。 请帮忙!!!

2 个答案:

答案 0 :(得分:14)

它被称为“情景”:http://www.yiiframework.com/doc-2.0/guide-structure-models.html#scenarios

模特中的

public function rules()
{
    return [
        ['title', 'required', 'on' => 'create']
    ];
}
控制器中的

public function actionCreate()
{
     $model = new Item();
     $model->scenario = 'create';
     ...
}

您最好将场景定义为常量。

答案 1 :(得分:0)

您可以使用yii 2中的方案来实现此目的。 '上' = GT;'创建'场景可以在模型中使用。

public function actionCreate()
{
     $model = new Student();
     $model->scenario = 'create';
     ...
}

在控制器中你必须打电话给那个场景。

try
{
 MySqlDataReader reader = null;
 mcon.Open();
 MySqlCommand command2 = mcon.CreateCommand();
 command2.CommandText = "select * from pointofcontact where Username = ?username";
 command2.Parameters.AddWithValue("?username", tbUsername.Text);
 reader = command2.ExecuteReader();
 if (reader != null && reader.HasRows)
 {
    lblValidate.Text = "Username already exists.";
    **return;**
 }
 else
 {
  MySqlCommand command = mcon.CreateCommand();
  command.CommandText = "insert into pointofcontact (FirstName, LastName,        EmailAddress, ContactNumber, BackupContactNumber, Address, Gender, Username, Password, Status, ProfilePic) values(?firstname, ?lastname, ?emailaddress, ?contactnumber, ?backupcontactnumber, ?address, ?gender, ?username, ?password, ?status, ?image)";
  command.Parameters.AddWithValue("?firstname", firstname);
  command.Parameters.AddWithValue("?lastname", lastname);
  command.Parameters.AddWithValue("?emailaddress", email);
  command.Parameters.AddWithValue("?contactnumber", mobileNumber);
  command.Parameters.AddWithValue("?backupcontactnumber", backupNumber);
  command.Parameters.AddWithValue("?address", homeAddress);
  command.Parameters.AddWithValue("?gender", gender);
  command.Parameters.AddWithValue("?username", username);
  command.Parameters.AddWithValue("?password", password);
  command.Parameters.AddWithValue("?status", status);
  command.Parameters.AddWithValue("?image", imageName);
  command.ExecuteNonQuery();
  }
}
catch
{
  ....
}
finally
{
 mycon.Close();
}

还有一个自定义场景概念,它提供了更好的验证规则。 参考: - custom scenarios in yii 2