如何在yii2中应用更新规则
我是yii2新手,不知道如何将相同的插入规则应用到更新中。这是我的插入规则,我希望所有规则也能在更新时生效如何在yii2中应用更新规则,yii,yii2,updates,rules,Yii,Yii2,Updates,Rules,我是yii2新手,不知道如何将相同的插入规则应用到更新中。这是我的插入规则,我希望所有规则也能在更新时生效 public $tag; public function rules() { return [ [['user_id', 'name', 'address', 'state'], 'required'], [['user_id'], 'integer'], [['tag'], 'safe'], [['n
public $tag;
public function rules()
{
return [
[['user_id', 'name', 'address', 'state'], 'required'],
[['user_id'], 'integer'],
[['tag'], 'safe'],
[['name'], 'string', 'max' => 30],
[['address'], 'string', 'max' => 250],
[['state'], 'string', 'max' => 255],
];
}
在我的代码中添加“on”=>“update”无效。对不起我的英语。谢谢。默认规则应用于创建和更新中,如果希望在更新和创建之间有不同的行为,则只需创建新规则 要应用这些规则,只需创建一个
$model->validate()
来检查规则,请参阅yii2文档的这个示例
$model->load(\Yii::$app->request->post());
if ($model->validate()) {
// all inputs are valid
} else {
// validation failed: $errors is an array containing error messages
$errors = $model->errors;
}
默认规则应用于创建和更新中,如果希望更新和创建之间的行为不同,则只需创建新规则 要应用这些规则,只需创建一个
$model->validate()
来检查规则,请参阅yii2文档的这个示例
$model->load(\Yii::$app->request->post());
if ($model->validate()) {
// all inputs are valid
} else {
// validation failed: $errors is an array containing error messages
$errors = $model->errors;
}
您可以像这样向yii模型添加验证规则
public function rules(){
return [
[['boolean_var'],'boolean'],
[[ 'range_in_string'],'required'],
[['default_value'],'default','value'=>'DEFAULT VALUE'],
[['integer_var'],'integer'],
[['double_var'],'double'],
[['number_min'],'number','min'=>10],
[['number_max'],'number','max'=>100],
[['number_min_max'],'number','min'=>10,'max'=>100],
[['file_image'],'image'],
[['file_var'],'file','types'=>['gif','jpg']],
[['date_var'],'date', 'format'=>'d-m-yy'],
[['min_string'],'string','min'=>10],
[['max_string'],'string','max'=>10],
[['min_max_string'],'string','min'=>5,'max'=>10],
['min_max_string2', 'string', 'length' => [4, 10]],
['email_var','email'],
['url_var','url'],
[['unique_var'],'unique'],
[['filter_trim'],'filter','filter'=>'trim'],
[['filter_trim'],'filter','filter'=>'strtolower'],
['filter_custom_function', 'filter', 'filter' => function ($value) {
// your concept
if($value=='')
return '';
return 'Value Changed';}],
['range_in_min_max', 'in','range'=>range(5,20)],
['range_in','in','range'=>['en','fr','zn'],'strict'=>false], //strict false
['range_in_string','in','range'=>['EN','FR','ZN'],'strict'=>true],
['custom_validation','custom_function_validation'],
[['passwordConfirm'], 'compare', 'compareAttribute' => 'password'],
[['password','date_var'],'safe'],
];
}
如果只需要在更新而不创建时触发,可以添加如下场景
public function rules()
{
return [
// username, email and password are all required in "update" scenario
[['username', 'email', 'password'], 'required', 'on' => 'update'],
// username and password are required in "login" scenario
[['username', 'password'], 'required', 'on' => 'login'],
];
}
在调用validate之前的操作中添加场景
//场景设置为属性
$model = new User;
$model->scenario = 'update';
您可以像这样向yii模型添加验证规则
public function rules(){
return [
[['boolean_var'],'boolean'],
[[ 'range_in_string'],'required'],
[['default_value'],'default','value'=>'DEFAULT VALUE'],
[['integer_var'],'integer'],
[['double_var'],'double'],
[['number_min'],'number','min'=>10],
[['number_max'],'number','max'=>100],
[['number_min_max'],'number','min'=>10,'max'=>100],
[['file_image'],'image'],
[['file_var'],'file','types'=>['gif','jpg']],
[['date_var'],'date', 'format'=>'d-m-yy'],
[['min_string'],'string','min'=>10],
[['max_string'],'string','max'=>10],
[['min_max_string'],'string','min'=>5,'max'=>10],
['min_max_string2', 'string', 'length' => [4, 10]],
['email_var','email'],
['url_var','url'],
[['unique_var'],'unique'],
[['filter_trim'],'filter','filter'=>'trim'],
[['filter_trim'],'filter','filter'=>'strtolower'],
['filter_custom_function', 'filter', 'filter' => function ($value) {
// your concept
if($value=='')
return '';
return 'Value Changed';}],
['range_in_min_max', 'in','range'=>range(5,20)],
['range_in','in','range'=>['en','fr','zn'],'strict'=>false], //strict false
['range_in_string','in','range'=>['EN','FR','ZN'],'strict'=>true],
['custom_validation','custom_function_validation'],
[['passwordConfirm'], 'compare', 'compareAttribute' => 'password'],
[['password','date_var'],'safe'],
];
}
如果只需要在更新而不创建时触发,可以添加如下场景
public function rules()
{
return [
// username, email and password are all required in "update" scenario
[['username', 'email', 'password'], 'required', 'on' => 'update'],
// username and password are required in "login" scenario
[['username', 'password'], 'required', 'on' => 'login'],
];
}
在调用validate之前的操作中添加场景
//场景设置为属性
$model = new User;
$model->scenario = 'update';
如果所有操作的规则都相同。。更新不需要特定的声明。。只有当insert和update之间的规则不同时,您才必须进行配置。您所说的规则是什么?例如,所需的规则?这些规则将应用于更新和insert,直到您指定一些仅用于更新的规则,可能您在问其他问题。我对yii2是新手,并且我已经阅读了文档。但是默认情况下,我的规则在更新中不起作用。如果所有操作的规则都相同。。更新不需要特定的声明。。只有当insert和update之间的规则不同时,您才必须进行配置。您所说的规则是什么?例如,所需的规则?这些规则将应用于更新和insert,直到您指定一些仅用于更新的规则,可能您在问其他问题。我对yii2是新手,并且我已经阅读了文档。但默认情况下,我的规则在更新中不起作用。