1) Потому что так надо делать согласно паттерну, просто разработчики Yii для всеобщего удобства и ускорения рапид разработки отнаследовали АктивРекорд от Модели
2)Модель в Yii можно интерпретировать как шаблон проектирования DTO с возможностью валидации
3) Решать Вам. (Но "правильнее" через модель)
А че гадать зарегистриуйтесь на google search console, там есть пункт просмотреть страницу как google bot введите туда свою pjax ссылку и посмотрите что выйдет (там будет два окна как видит пользователь и как видит бот)
Но мне кажется может возникнуть спорная ситуация... даже если бот без js перейдет по ссылке а пользователь останется на старой но сновым контентом, тогда могут не совпасть хедер разные метатеги какие нибудь изображения и гугл может посчитать что вы пытаетесь обмануть бота и отдаете разный контент пользователю и боту а в не редких случаях это бан. Правда проблема аяксовых сайтов уже лет 10 стоит может гугл относится к этому уже лояльней
В статус заказа ставите не подтвержденный, ту да же в таблицу ордер (или можно завести отдельную чтоб не мусорить) генерируете хеш код для подтверждения, а кнопка подтвердить обычная ссылка на экшен подтверждения и в качестве гет параметра принимает тот самый хеш по нему находите свой ордер и выставляете статус подтвержден
Ну по простому можете держать zip архив мини црм который и будете разворачивать, ну а база или миграции или дамп с того же архива. В Вашем случае само сложное это как автоматизировать процесс создания поддомена и базы данных под проект.
есть такой модуль https://github.com/ElisDN/yii2-composite-form
В живую никогда им не пользовался, но использовал его принцип, когда Вы создаете грубо говоря форму-контейнер а в нее инжектите свои формы в зависимости от вашего сценария, в форме контейнера переопределяете два метода load и validate, в которые вы загружаете и валидируете данные внутренних форм и в контроллере после успешной валидации сохраняете ваши данные в бд
Не понятно вроди все просто
сделайте две модели (два класса отнаследованных от класса Model) и настройте правила валидации для каждой из будущих форм (для ввода табельного номера и ввода всего остального)
а в шаблоне сделайте табы в первом выводите форму для первой модели а во втором табе для второй модели, отправляете хоть аяксом хоть обычным постом и все... в контроллере делаете реализуете load и validate методы каждой модели и вслучае успеха выполняете то что вам надо
При не правильных входных значениях данный метод (generatePasswordHash) может вернуть эксепшен, который по хорошему (о чем и говорит пхпшторм) нужно поставить блок try catch, либо у вас вверху описание функции и там надо указать что Ваш метод (setPassword) может вернуть эксепшен
1)Дикость....А зачем вы напрямую к $_POST обращаетесь, когда есть метод load
2) Вместо Yii::$app->request->post()
используйте Yii::$app->request->isPost
если вы оффициально участник вебиаров Елисеева то можете лично у него узнать))))
Зайдите. К нему на гитхаб и там у него есть классы по соответствующим неймспейсам
'common\bootstrap\SetUp',
'frontend\bootstrap\SetUp
а почему бы не заменить $user->getPrimaryKey();
на $user->id;//где id это и есть Ваш primary key
и не плохо бы выложить код модели Token, почему в ней могут проблемы сохранения....