Я использую Laravel с mySql. У меня есть две таблицы в виде лезвия, одна в главном div, которая содержит кнопку, чтобы открыть вторую, находящуюся в стороне div, и заполнить ее данными, полученными из контроллера. Пожалуйста, найдите ниже мой код:
мои маршруты
// showing list of orders
Route::get('orders/show/all', 'OrderController@showOrders')->name('orders.show.all');
// showing order details
Route::get('orders/details/{id}', 'OrderController@showOrderDetails')->name('orders.details');
мой контроллер (OrderController), скопировал только две функции, которые имеют отношение к этому
public function showOrders(){
$orders = Order::orderBy('total_amount', 'desc')
->where('user_id','=', Auth::user()->id)
->get();
return view('orders.undo_sales', compact('orders'));
}
public function showOrderDetails($id){
$ordered_item = Order::findOrFail($id);
return redirect('orders/show/all', compact('ordered_item'));
}
}
моему лезвию . php file
<main class="col-sm-8">
@include('partials.messages')
<div class="card">
<div class="card-header">List of all sales</div>
<div class="card-body">
<table class="table ">
<thead>
<tr>
<th>Order #</th>
<th>Order Date</th>
<th>Total Amount</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
@foreach ($orders as $order)
<tr>
<td>{{ $order->id }}</td>
<td>{{ $order->created_at }}</td>
<td>{{ number_format($order->total_amount) }}</td>
<td>
<a href="{{ route('orders.details', $order->id) }}" class="btn btn-sm btn-secondary" onclick="showDiv()">Order details</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</main>
<aside class="col-sm-4" id="aside">
<div class="card">
<div class="card-header">Order Details</div>
<div class="card-body">
<table class="table ">
<thead>
<tr>
<th>Item Name</th>
<th>Quantity</th>
</tr>
</thead>
<tbody>
@foreach ($ordered_item->items as $value)
<tr>
<td>{{ $value->item_name }}</td>
<td>{{ number_format($value->pivot->quantity_on_order) }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</aside>
</div>
<script>
let showDetails = document.querySelector('.show-details')
let aside = document.querySelector('#aside')
aside.style.display = 'none'
function showDiv(){
aside.style.display = 'block'
}
</script>
Нет проблем с заполнением основной (первой) таблицы данными из контроллера. Проблема заключается в получении объекта, возвращенного функцией showOrderDetails ($ id), в том же представлении, но в другой таблице, и отображении этих записей. Я попытался dd () данных в контроллере по этому методу, и я мог видеть item_name и соответствующее количество. Который доказал, что нет проблем с этим кодом в блейд-файле:
@foreach ($ordered_item->items as $value)
<tr>
<td>{{ $value->item_name }}</td>
<td>{{ number_format($value->pivot->quantity_on_order) }}</td>
</tr>
@endforeach
Но когда я отправил на просмотр, я получил ошибку в моем файле вида:
Неопределенная переменная : orders_item
Пожалуйста, помогите мне передать данные. Спасибо.