Yii2 имеет несколько встроенных валидаторов см. .
Один из которых unique
Из документов Yii2.
// a1 должен быть уникальным в столбце, представленном атрибутом "a1"
['a1', 'unique'],
// a1 должен быть уникальным, но столбец a2 будет использоваться дляпроверьте уникальность значения a1
['a1', 'unique', 'targetAttribute' => 'a2'],
Обновление:
В своем массиве правил добавьте уникальный валидатор в email
и username
, например так:
public function rules()
{
return [
[['username', 'email', 'password'], 'required'],
[['username', 'email'], 'unique'],
];
}
Затем перед сохранением модели:
if(!$model->validate()){
return false;
}
Обновление 2:
Вы пытаетесь проверить модель до того, как были назначены какие-либо атрибуты.,Обновите код вашего контроллера следующим образом:
public function actionCreate()
{
$model = new Userapp();
$post = Yii::$app->request->post('UserApp');
if (Yii::$app->request->isPost) {
$model->email = $post['email'];
$model->username = $post['username'];
$model->password = $model->setPassword($post['password']);
if($model->validate() && $model->save()){
return $this->redirect(['view', 'id' => $model->id]);
}
else {
return false;
}
}
return $this->render('create', [
'model' => $model,
]);
}