У меня проблема с Kartik Select2. Когда я хочу сохранить несколько данных в моем контроллере, ничего не сохраняется. И я удаляю foreach в контроллере, Yii возвращает мне ошибку с информацией о $ university_id IS NULL.
Форма пользователя
<?= $form->field($user_university, 'university_id')->widget(Select2::classname(),[
'name' => 'university_id[]',
'data' => ArrayHelper::map(
\app\models\University::find()->asArray()->all(),
'id',
function ($university) {
return $university['name'];
}
),
'size' => Select2::MEDIUM,
'options' => ['placeholder' => 'Select a state ...', 'multiple' => true],
'pluginOptions' => [
'allowClear' => true
],
]); ?>
Пользовательский контроллер
$user = new User();
$user->scenario = User::SCENARIO_CREATE;
$auth_assignment = new AuthAssignment();
$user_company = new UserCompany();
$user_university = new UserUniversity();
$user_status = UserStatus::find()
->select('id')
->where(['name' => UserStatus::NON_AUTHORIZED_USER])
->one();
if ($user->load(Yii::$app->request->post()) && $auth_assignment->load(Yii::$app->request->post())) {
$user->auth_key = Yii::$app->getSecurity()->generateRandomString();
$user->password_hash = Yii::$app->getSecurity()->generatePasswordHash($user->password);
$user->password_reset_token = Yii::$app->getSecurity()->generateRandomString();
$user->status_id = $user_status->id;
$user->created_at = date('Y-m-d H:i:s');
$user->updated_at = date('Y-m-d H:i:s');
if ($user->save()) {
$auth_assignment->user_id = $user->id;
$auth_assignment->created_at = date('Y-m-d H:i:s');
$universities = $user_university->university_id;
foreach((array) $universities as $university)
{
$newUserUniversity = new UserUniversity();
$newUserUniversity->user_id = $user->id;
$newUserUniversity->university_id = $university;
$newUserUniversity->created_at = date('Y-m-d H:i:s');
$newUserUniversity->save(false);
}...
Пользовательское правило модели университета
public function rules()
{
return [
[['user_id', 'university_id', 'created_at'], 'required'],
[['user_id', 'university_id','confirm'], 'integer'],
[['created_at','university_id'], 'safe'],
[['university_id'], 'exist', 'skipOnError' => true, 'targetClass' => University::className(), 'targetAttribute' => ['university_id' => 'id']],
[['user_id'], 'exist', 'skipOnError' => true, 'targetClass' => User::className(), 'targetAttribute' => ['user_id' => 'id']],
];
}