Доброй ночи всем.
Схема такая у меня есть таблица profile, category, profile_has_category.
profile
id | user_id | category_id | ... | ...
category
id | parent_id | title | ... | ...
profile_has_category
id | user_id | category_id | ...
Юзер выбирает себе категории(ю), то что он выбрал должно сохранить в таблицу profile_has_category, потом я получаю id от profile_has_category и сохраняю в profile: category_id
model
public function updateProfile()
{
$id = Yii::$app->user->id;
$profile = ($profile = Profile::findOne(['user_id' => $id])) ? $profile : new Profile();
$profile->user_id = Yii::$app->user->id;
....
// не могу принять post в моделе
if (Yii::$app->request->isPost) {
VarDumper::dump(Yii::$app->request->post(), 11, 1);
die;
}
return $profile->save() ? true : false;
}
controller
public function actionProfile()
{
$id = Yii::$app->user->id;
$model = ($model = Profile::findOne(['user_id' => $id])) ? $model : new Profile();
$weeks = Profile::weeks();
$workGraph = WorkSchedule::workGraph();
$gallery = Profile::getGallery();
$tree = $model->getAllCategories();
if (Yii::$app->request->isPost) {
// в контроллере я вижу post, но
$categories = Yii::$app->request->post('category')
foreach ($categories as $category){
// но когда так делаю то получаю, такой результат: 245, а я выделил три чекбокса 245, 285, 320
VarDumper::dump(Yii::$app->request->post($categories), 11, 1);
die;
}
if ($model->load(Yii::$app->request->post())) {
$model->gallery = UploadedFile::getInstances($model, 'gallery');
if ($model->updateProfile()) {
Yii::$app->session->setFlash('success', 'Профиль изменен!');
return $this->refresh();
} else {
Yii::$app->session->setFlash('error', 'Профиль не изменен!');
Yii::error('Ошибка записи. Профиль не изменен!');
return $this->refresh();
}
}
}
return $this->render('profile', [
'model' => $model,
'weeks' => $weeks,
'workGraph' => $workGraph,
'gallery' => $gallery,
'tree' => $tree,
]);
}
view
$form = ActiveForm::begin();
foreach ($tree as $cat) {
echo '<div class="spoiler-title ">' . $cat['title'] . '</div>';
echo '<div class="spoiler-body">';
if ($cat['childs'] > 0) {
foreach ($cat['childs'] as $childs) {
if (empty($childs['childs'])) {
echo Html::checkbox('category[]', false, ['value' => $childs['id'], 'label' => $childs['title']]) . '<br>';
} else {
echo '<b><br/>' . $childs['title'] . '</b><br/>';
}
foreach ($childs['childs'] as $child) {
echo Html::checkbox('category[]', false, ['value' => $child['id'], 'label' => $child['title']]) . '<br>';
}
}
}
echo '</div>';
}
echo Html::submitButton('Сохранить', ['class' => 'btn btn-success']);
$form = ActiveForm::end();
var_dump
[
'_csrf' => 'ZTROVV8ta1IneQstDV4/ZhxWLDg0axoNVmI.Ni1sWQUQRQpmL14aPQ=='
'category' => [
0 => '262'
1 => '264'
2 => '265'
]
]
262, 264, 265 - это id категории. Помогите как правильно сохранить!