Прочитал документацию несколько раз, облазил десятки статей, но так до конца и не понял указание правил для сценариев.
Есть AR User, там определяем сценарий
<?php
namespace common\models;
use yii\db\ActiveRecord;
use yii\web\IdentityInterface;
class User extends ActiveRecord implements IdentityInterface
{
const SCENARIO_REGISTRATION = 'registration';
public function scenarios()
{
$scenarios = parent::scenarios();
$scenarios[self::SCENARIO_REGISTRATION] = ['nickname', 'email', 'password'];
return $scenarios;
}
Есть Model прослойка RegistrationForm
<?php
namespace frontend\modules\account\models\forms;
use Yii;
use yii\base\Model;
use common\models\User;
use frontend\modules\account\models\Token;
class RegistrationForm extends Model
{
public $nickname; // nickname user
public $email; // email user
public $password; //password user
//....
/**
* Registration function
* @return bool
* @throws \Exception
* @throws \yii\db\Exception
*/
public function registration()
{
if (!$this->validate()) {
return false;
}
$transaction = Yii::$app->db->beginTransaction();
try {
$user = new User();
$user->scenario = User::SCENARIO_REGISTRATION;
$user->attributes = $this->attributes;
$user->email_confirm = User::EMAIL_NO_CONFIRM;
$user->generatePassword($this->password);
//.....
}
}
В ней мы устанавливаем сценарий и присваиваем массово атрибуты.
Где мы должны при этом писать
rules, в AR или Model (RegistrationForm). В документации как я понял это делается в AR, однако в некоторых расширениях rules присутствует и там и там, при этом идентичен, что соответственно ввело в тупик. Зачем? Почему? Как и где все таки прописывать правила валидации?
Помогите догнать суть.