Laravel将参数URL ID传递给控制器​​功能

时间:2019-11-08 02:38:19

标签: laravel

我有一个带有数据/信息的页面,上面有一个下载按钮,可将我的页面转换为pdf。现在,下载按钮是我的处理方式。

我当前的页面网址。

Route::get('/inventory/{id}', function ($id) {
    $inventory = Inventory::find($id);
    return view('layouts._inventory-template', ['inventory' => $inventory])
});

视图中的我的按钮

<a href="{{ action('ClientController@viewPdf', ['id' => $request()->route('id')]) }}" class="button button-secondary"><span></span>PDF</a>

ClientController中的功能

public function viewPdf($id)
{
    $inventory = Inventory::find($id);

    $pdf = PDF::loadView('layouts._inventory-template');
    return $pdf->download('inventory.pdf');
}

问题:如何在视图页面中实现PDF下载按钮的逻辑?

4 个答案:

答案 0 :(得分:0)

在您的路由器中:

Route::get('/viewPdf/{id}', 'ClientController@viewPdf');

您可以简单地在href中呼叫路线:

<a href="/viewPDF/{{ $id }}" class="button button-secondary"><span></span>PDF</a>

答案 1 :(得分:0)

我建议:

Route::get('/inventory/{id}', 'ClientController@downloadPdf')->name('download-pdf');

ClientController

public function downloadPdf()
{
  $inventory = Inventory::find($id);
  $pdf = PDF::loadView('layouts._inventory-template', $inventory);
  return $pdf->download('inventory.pdf');
}

按钮

<a href="{{ route('download-pdf', Auth::user()->id) }}" title="">Download<i class="la la-download"></i></a>

注意:如果需要其他任何功能,请在按钮中更改 Auth :: user()-> id

答案 2 :(得分:0)

可以用许多不同的方法来做,但是您可以使用route方法并用名称来更新您的路线...

使用以下名称更新您的路线:

const moment = require('moment')

const a = '08-01-2019';
const outputDateFormat = 'MM-DD-YYYY';

const b = moment(a, 'MM-DD-YYYY').add(1, 'years').add(-1, 'days').format(outputDateFormat);
console.log(b);

现在使用路由方法:

    Route::get('/inventory/{id}', function ($id) {
    $inventory = Inventory::find($id);
    return view('layouts._inventory-template', ['inventory' => $inventory])
})->name('inventory_show');

答案 3 :(得分:0)

只需在标签中添加下载属性

<a href="{{ action('ClientController@viewPdf', ['id' => $request()->route('id')]) }}" class="button button-secondary" download><span></span>PDF</a>