【发布时间】:2018-11-16 09:36:41
【问题描述】:
我对 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']],
];
}
【问题讨论】:
-
提交后
Yii::$app->request->post()的结果是什么? -
Yii::$app->request->post() 如果表单已经发送并且数据作为 post 发送,则返回 true。用户和 Auth_assignment 正常保存,只是我不能保存用户大学的信息。
-
您的表单中是否有多个名称为
university_id的下拉菜单? -
是的,我使用 Kartik Select2 进行多个下拉菜单。一切都很好,但返回值为空。
-
很抱歉再问一次,但我知道这是一个
multi-dropdown,但是对于同一字段university_id,您是否有多个multi-dropdowns?
标签: php arrays yii2 jquery-select2