我目前正在Laravel中建立一个视图,其中包含一个用于订单的DataTable,每行包含一个订单的数据,还有一个用于更新其状态的按钮。调用此操作会弹出一个带有必要表单参数的模式窗口。那就是我认为必须根据所选行的数据更新一次性包含模式的地方。通过为调用模式的按钮添加Javascript事件侦听器,从受影响的行中读取数据并将其插入到模式中,来做到这一点非常容易。
$(document).on("click", "a.order_status_update", function () {
var order_id = $(this).data('id');
var data = table.row('#dt-id-' + order_id).data();
// manipulating modal data...
});
但是,除了对我来说这似乎是一个很不干净的解决方案之外,我还必须更新表单操作路线,该路线包含要更新的订单的ID,但已经由Blade引擎在那时进行了编译点。
<form method="post" action="{{route('orders.status.update', ['order_id' => /*not a fixed value!*/])}}">
有人知道一个理想的解决方案吗?最好自己用Javascript生成路由,还是改用固定路由并通过POST数据传输ID?根本没有更好的参数化模态解决方案吗?
IIRC会提供一种通过控制器通过AJAX请求生成拟合模态的方法,尽管我不确定希望这将如何工作。
答案 0 :(得分:2)
那这样的事情呢?
@foreach($datas as $data)
<tr data-toggle="modal" data-target="#editData{{$data->id}}">
<td>{{$data->location}}</td>
<td>{{$data->address}}</td>
<td>{{$data->city}}</td>
<td>{{$data->time}}</td>
<td>{{$data->date}}</td>
</tr>
<div class="modal" id="editData{{$data->id}}" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
//put all your data in here with $data
</div>
@endforeach
基本上,每次遍历foreach循环时,您都在创建一个模态,该模态中的特定$ data由唯一ID访问。