Вообщем такая проблема у меня есть страница на которой в модалке создается новый "магазин", также в другой модалке у любого из существующих "магазинов" можно изменить тариф и версию, и всё это повешено через pjax и создание срабатывает нормально, а вот обновление срабатывает, но ничего не изменяется, поэтому нужна помощь в данной проблеме. Вот код самой страницы:
<?php Pjax::begin(); ?>
<div class="shops__block">
<div class="shops__box s-di-vertical-m shops__box_pr40">
<div class="shops__image">
<?=Html::img('@web/images/shops-image.png', ['class' => 'shops__img']); ?>
<div class="shops-count">
<p class="shops-count__number"><?=count($shops); ?></p>
</div>
</div>
</div>
<div class="shops__box s-di-vertical-m">
<h3 class="shops__box-title">
Ваши магазины
</h3>
<div class="add-something" data-jsx-modal-target="store">
<div class="add-something__plus s-di-vertical-m"></div>
<p class="add-something__text add-something__text_fs14 s-di-vertical-m">добавить магазин</p>
</div>
</div>
</div>
<?php foreach ($shops as $shop): ?>
<ul class="shops__list">
<li class="shops__item-mobile">
<div class="shops__item-box s-di-vertical-m shops__item-title">версия</div>
<div class="shops__item-box shops__item-box-mobile s-di-vertical-m" data-jsx-modal-target="version-change">
<a href="#" class="shops__item-box-link shops__item-name">Light</a>
</div>
</li>
<li class="shops__item">
<div class="shops__item-box shops__item-title">Адрес</div>
<div class="shops__item-box shops__item-box_mw115 shops__item-title">версия</div>
</li>
<li class="shops__item shops__item_p2">
<div class="shops__item-box shops__item-name"><?=$shop['address']; ?></div>
<?php $id_modal_version = md5($shop['id'] . '_' . $shop['version']);
$version = $shop['version']; ?>
<div class="shops__item-box shops__item-box_mw115" data-jsx-modal-target="version-change_<?=$id_modal_version; ?>">
<a href="#" class="shops__item-box-link shops__item-name">
<?=Shops::getVersion($version); ?>
</a>
</div>
</li>
<li class="shops__item shops__item_pb12">
<div class="shops__item-box shops__item-box_df">
<div class="shops__item-icon">
<?=Html::img('@web/images/icon/icon-lifebuoy.svg'); ?>
</div>
<p class="shops__item-box-text">Техподдержка: </p>
<?php $id_modal_tariff = md5($shop['id'] . '_' . $shop['tariff']['id']);
$tariff_id = $shop['tariff']['id']; $shop_id = $shop['id']; ?>
<div class="shops__item-tariff" data-jsx-modal-target="tariff_<?=$id_modal_tariff; ?>">
<a href="#" class="shops__item-tariff-text">
<?=$shop['tariff']['name']; ?> (<?=Yii::$app->formatter->asDecimal($shop['tariff']['cost'], 2); ?> руб/мес)
</a>
<a href="#" class="shops__item-tariff-icon">
<?=Html::img('@web/images/icon/icon-list-arrow.svg'); ?>
</a>
</div>
</div>
</li>
<li class="shops__item">
<div class="add-something">
<div class="add-something__plus s-di-vertical-m"></div>
<p class="add-something__text s-di-vertical-m">добавить услугу</p>
</div>
</li>
</ul>
<?php echo $this->render('modal/tariff', compact('modelShop', 'tariffs', 'id_modal_tariff', 'tariff_id', 'shop_id')); ?>
<?php echo $this->render('modal/version-change', compact('version', 'id_modal_version')); ?>
<?php endforeach; ?>
<?php Pjax::end(); ?>
Так а теперь код в модалки в которой пытаюсь сделать смену тарифа:
<div class="jsx-modal" data-jsx-modal-id="tariff_<?=$id_modal_tariff; ?>">
<div class="jsx-modal__block jsx-modal-popup jsx-modal-popup_tariff">
<div class="close close-add-store jsx-modal__close"></div>
<div class="tariff">
<h3 class="popup__title popup__title-tariff">
Выберите тариф для перехода
</h3>
<div class="tariff__wrapp js_tab-parent">
<ul class="tariff__tab">
<?php foreach ($tariffs as $tariff): ?>
<?php if($tariff_id != $tariff['id']): ?>
<li class="tariff__tab-item js__tab-item" data-id="<?=$tariff['id']; ?>">
<div class="version-name">
<h3 class="version-name__title version-name__title_tariff"><?=$tariff['name']; ?></h3>
<p class="version-name__price version-name__price-tab"><?=Yii::$app->formatter->asDecimal($tariff['cost'], 2); ?> руб/мес</p>
</div>
<div class="tariff__show-hide js__show-hide">
Что входит в тариф?
</div>
</li>
<?php endif; ?>
<?php endforeach; ?>
</ul>
<ul class="tariff__content">
<?php foreach ($tariffs as $tariff): ?>
<?php if($tariff_id != $tariff['id']): ?>
<li class="tariff__content-item js__content-item">
<div class="tariff__content-row">
<?=$tariff['about']; ?>
</div>
</li>
<?php endif; ?>
<?php endforeach; ?>
</ul>
<?php $form1 = ActiveForm::begin(['options' => ['data' => ['pjax' => true]]]); ?>
<?= $form1->field($modelShop, 'id')->hiddenInput(['value' => $shop_id])->label(false); ?>
<?= $form1->field($modelShop, 'tariff_id')->hiddenInput(['value' => $tariff_id])->label(false); ?>
<?= Html::submitButton('Перейти', ['class' => 'button button_width-200px tariff__button']); ?>
<?php ActiveForm::end(); ?>
</div>
</div>
</div>
</div>
А теперь собственно код контроллера:
public function actionIndex() {
$shops = Shops::find()->with('tariff')->where(['user_id' => Yii::$app->user->id])->asArray()->all();
$tariffs = Tariff::find()->asArray()->all();
$modelShop = new Shops();
if ($modelShop->load(Yii::$app->request->post())) {
if ($modelShop->id != '' && $modelShop->tariff_id != '') {
$update = Shops::find()->where(['id' => $modelShop->id])->one();
$update->tariff_id = $modelShop->tariff_id;
$update->save();
} else {
$modelShop->save();
}
return $this->refresh();
}
return $this->render('index', compact('shops', 'modelShop', 'tariffs'));
}
UPD: Так нашел ошибку говорит что не могу принять атрибут id т.к. он небезопасный.
Кароче сделал всё просто поправил форму в модалке вот так:
<?php $form1 = ActiveForm::begin(['options' => ['data' => ['pjax' => true]], 'action' => Url::to(['/user/update-shop'])]); ?>
<?= $form1->field($modelShop, 'id')->hiddenInput(['value' => $shop_id])->label(false); ?>
<?= $form1->field($modelShop, 'tariff_id')->hiddenInput(['value' => $tariff_id])->label(false); ?>
<?= Html::submitButton('Перейти', ['class' => 'button button_width-200px tariff__button']); ?>
<?php ActiveForm::end(); ?>
Ну и соответственно в контроллере создал нужный action:
/**
* Просто action для обновления тарифа магазина
*
* @return \yii\web\Response
*/
public function actionUpdateShop() {
$updateShop = Yii::$app->request->post();
$shop = Shops::findOne($updateShop['Shops']['id']);
$shop->tariff_id = $updateShop['Shops']['tariff_id'];
$shop->save();
return $this->redirect(['/user/index']);
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
У меня есть файл configphp, где идет установка некоторых строковых констант (define), которые содержат в себе абсолютные пути к директориям файла,...
Всем доброго времени суток! Делаю одно задание и столкнулся с небольшой трудностьюУ меня есть некий csv файл с названиями столбцов - (За период;Учетный...
Почему нельзя удалять из коллекции в цикле for-each?