Я не очень понимаю, зачем вы в переменную $model засовываете массив с продуктом и его связанными моделями, в уроках вроде такому не учат, так же, рекомендую использовать транзакции, чтобы в случае возникновения где-то ошибок не сохранялось ничего и конечно же, вы зря отключаете валидацию при сохранении характеристик.
1) Сделайте
$model['product_tech_spec'] = [new ProductTechSpec()];
for($i = 1; $i < $count; $i++) {
$model['product_tech_spec'][] = new ProductTechSpec();
}
вместо
for($i = 1; $i < $count; $i++) {
$model['product_tech_spec'][] = new ProductTechSpec();
}
2) Тут ошибка:
Model::validateMultiple($model['product_tech_spec'],true);
Второй аргумент надо убрать.
3) Так же от двух условий
return $this->render('create', [
'model' => $model,
]);
Можно избавиться, просто удалив два else и вставив этот кусок кода в конце.