Всем привет!
Как лучше реализовать редактирование другой модели в модальном окне, к примеру есть два контроллера и две модели Customers и Orders, у меня есть таблица где я показываю GridView Customers, при клике на какого нибудь клиента хочу показывать его заказы в модальном окне DetailView и если надо редактировать. Как лучше это сделать? Как организовать запрос к другой модели и контроллеру? И вообще это правильный подход?
Модальное окно для связанных данных
-
- Сообщения: 977
- Зарегистрирован: 2014.08.27, 21:54
Re: Модальное окно для связанных данных
Всем привет.
сделал вот так, создал еще одну вьюшку в Orders, и уже с вьюшки Customers index вызываю то что нужно
при клике на строчку в GridView
Modal
js
в OrdersController
сама вьюшка с DetailView _details.php
Подскажите как сделать редактирование orders в самом модальном окне с помощью ajax? При клике на кнопку "редактировать", можно было бы поменять данные и сохранить.
сделал вот так, создал еще одну вьюшку в Orders, и уже с вьюшки Customers index вызываю то что нужно
при клике на строчку в GridView
Код: Выделить всё
'rowOptions' =>
function ($model, $key, $index, $grid) {
$r = Url::to(['orders/_details', 'id' => $model->id,]);
return ['class' => 'orders-detail', 'data-href' => $r,];
},
Код: Выделить всё
Modal::begin([
'id'=>'ordersModal',
'size' => \yii\bootstrap\Modal::SIZE_LARGE,
'header' => '<h3>'.'Orders:'.$model->orders->id.'</h3>',
]);
echo '<div id="ordersContent"></div>';
Modal::end();
Код: Выделить всё
$('.orders-detail').on('click', function() {
$('#ordersModal').modal('show')
.find('#ordersContent')
.load($(this).data('href'));
});
Код: Выделить всё
public function actionDetails($id)
{
$model = $this->findModel($id, true);
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['customers/index', 'id'=>$model->id]);
}
return $this->renderAjax('_details', ['model'=>$model]);
}
Код: Выделить всё
echo Html::beginForm('','post',[
'id' => 'orders_detailview',
]);
?>
<div class="orders_detailview">
<?php
try {
echo DetailView::widget([
'model' => $model,
'hAlign' => 'right',
'vAlign' => 'middle',
'attributes' => [
[
'columns'=>[
[
'attribute'=>'id',
],
[
...
],
],
],
],
]);
} catch (Exception $e) {
return $e->getMessage();
}
?>
<p class="btn-modal">
<?= Html::a('<i class="glyphicon glyphicon-pencil"></i> Редактировать', ['', 'id' => $model->id], [
'class' => 'btn btn-default btn-update',
]) ?>
</p>
</div>
<?= Html::endForm(); ?>
-
- Сообщения: 977
- Зарегистрирован: 2014.08.27, 21:54
Re: Модальное окно для связанных данных
Вверху же дал решене. 10 мин почитать, 5 мин. поставить. И никакого лишнего кода..