ユーザー情報を作成・更新するため、yii2でrest APIを作成しています。以下は、モデル クラスのルール関数です。
public function rules()
{
return [
[['name', 'emailId', 'contactNumber'], 'required'],
[['name', 'emailId', 'contactNumber'], 'string', 'max' => 255]
[['emailId', 'username', 'contactNumber'], 'unique'],
['status', 'default', 'value' => self::STATUS_ACTIVE],
['status', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED]]
];
}
ここでemailId
、 、username
、contactNumber
フィールドは一意である必要があると述べました。作成しようとすると、フィールドが一意かどうかをチェックしています。一意の場合はエラーがスローされ、それ以外の場合は保存されます。それは結構です。
しかし、そこで値を更新しようとすると、フィールドの特定の値が一意かどうかもチェックされます。しかし、そうであってはなりません。検証は では機能しunique
ません。そこで、 as likeupdate action
でルールを更新しました。以下の機能を確認してください。'on'=>'update'
Yii 1
public function rules()
{
return [
[['name', 'emailId', 'contactNumber'], 'required'],
[['name', 'emailId', 'contactNumber'], 'string', 'max' => 255]
[['emailId', 'username', 'contactNumber'], 'unique', 'on'=>'update'],
['status', 'default', 'value' => self::STATUS_ACTIVE],
['status', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED]]
];
}
しかし、公式ドキュメントon
を確認すると、特定の.xmlを確認するようなオプションはありませんaction
。を使用する'on'=>'update'
と、(作成中と更新中の) 両方とも、検証されていません。のせいかもしれませんon
。それを残してください。ではなくunique
、これらのフィールドの検証を追加する必要があります。create action
update action
したがって、作成アクションでのみこれらのフィールドに一意の検証を追加する方法を誰か助けてください。
ありがとう。