Пример, который протестил только что.
Создаю запись 'slug' = 'test', затем создаю запись 'slug' = ' test ' (с пробелами, для теста trim).
Два варианта rules():
Код: Выделить всё
// вариант 1
return [
['slug', 'trim'],
['slug', 'unique']
];
// вариант 2
return [
['slug', 'unique'],
['slug', 'trim']
];
Вариант 2 - форма проходит валидацию, после получаю ошибку бд (SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'test' for key 'slug'). Не было бы уникального ключа в бд - спокойно записались бы дубликаты, т.к. trim все же применяется, но уже после валидации.
Собственно к чему я это... довольно не очевидный момент, с возможно печальными последствиями. В доках нигде не нашел инфу про это. Часто встречаю на гитхабе именно второй вариант использования. Да что далеко ходить... вот dektrium/yii2-user знаменитый: https://github.com/dektrium/yii2-user/b ... r.php#L235