Home > Enterprise >  How to create a report for each?
How to create a report for each?

Time:11-24

I want to create a report for each order with the bootstrap modal. How do I do this?

<button type="button"  data-action="{{ route('admin.orders.report', $order->id) }}" data-bs-toggle="modal" data-bs-target="#report" data-id="{{ $order->id }}">Report</button>

script

$('#report').on('show.bs.modal', function(event) {
  var button = $(event.relatedTarget);
  var action = button.data('action');
  var orderId = button.data('id');
  var modal = $(this);
  modal.find('form').attr('action', action);
  document.getElementById("orderId").value = orderId;
});

web.php

Route::get('orders/report/{order}', [App\Http\Controllers\Admin\OrderController::class, 'report'])->name('orders.report');

Controller

public function report(Order $order)
{
  return view('Admin.orders.pdf', compact('order'));
}

modal

<div  id="report" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="report" aria-hidden="true">
  <div >
    <div >
      <form action="{{ route('admin.orders.report', $order->id) }}" method="post">
        @csrf
        <input id="orderIdUn" type="hidden" name="order_id" value="">
        <button type="submit" >Yes</button>

I see this error.

Uncaught TypeError: document.getElementById(...) is null

CodePudding user response:

You didn't assign the mentioned id to any element. Change this:

<input id="orderIdUn" type="hidden" name="order_id" value="">

to this:

<input id="orderId" type="hidden" name="order_id" value="">

And because you specified the method in your form to POST you have to change your route method to POST too (It could be GET but it's safer this way). In web.php file:

Route::post('orders/report/{order}', [App\Http\Controllers\Admin\OrderController::class, 'report'])->name('orders.report');
  • Related