У меня есть таблица, где я представляю данные пользователю, и у меня есть базовая c панель фильтрации над таблицей, где пользователь может выполнять фильтрацию даты, и я хочу, чтобы пользователь мог экспортировать, чтобы превзойти отфильтрованные данные
class ReportsController extends Controller
{
protected $transactions ;
protected $accounts;
public function getTransactions(){
$this->accounts = MerchantAccount::where('merchant_id', auth()->user()->id)->get();
return Transaction::where('merchant_id', auth()->user()->id);
}
public function getFilterdTransactions($request){
$filterd = $this->getTransactions();
if($request->filled(['from','to'])){
// take care of date filtering
$filterd
->whereDate('tranDate','>',$request->from)
->whereDate('tranDate','<',$request->to);
}
if($request->filled('account')){
// take care of account filtering
$filterd->where('merchant_account_id',$request->account);
}
return $filterd;
}
public function report(Request $request)
{
$this->transactions = $this->getTransactions();
return view('pages.report')->with(['data' => $this->transactions->get(), 'accounts' => $this->accounts]);
}
public function filter(Request $request){
$filterd = $this->getFilterdTransactions($request);
if($request->has('excel')){
$this->excel();
}
return view('pages.report')->with(['data' => $filterd->get(), 'accounts' => $this->accounts]);
}
// dowonload excel file
public function excel(){
return Excel::download(
new ReportsExport((
$this->getTransactions()
->get()
)), 'Reports.xlsx');
}
}
форма фильтра
<form action="" method="post">
@csrf
<div class="row">
{{-- from & to selectors --}}
<div class="col-md-12">
<div class="row">
<div class="col-md-6">
<h4>From:</h4>
<input type="date" name="from" id="" class="form-control">
</div>
<div class="col-md-6">
<h4>To:</h4>
<input type="date" name="to" id="" class="form-control">
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="row">
<div class="col-md-4">
<button type="submit" name='excel' class="btn btn-primary">Excel</button>
</div>
<div class="col-md-4">
<a href="#" class="btn btn-default">Print</a>
</div>
<div class="col-md-4">
<select name="account" id="" class="form-control">
<option value="" disabled selected>Choose Account</option>
@foreach ($accounts as $item)
<option value="{{ $item->id }}">{{$item->name}}</option>
@endforeach
</select>
</div>
</div>
</div>
</div>
<button type="submit">send</button>
</form>
Я пытался добавить кнопку экспорта в форму фильтрации, чтобы, когда пользователь щелкает по ней, я получал параметры фильтрации и передавал их getFilterdTransactions
когда я получил данные и передал их excel
методу, чтобы загрузить их, но по некоторым причинам они не работают