在Laravel 5.8应用程序中,我希望我的URL用荷兰语表示,但是,为了保持一致并且更容易使用,我希望使用其英文名称来命名其他所有内容。雄辩的意志(据我所知)只有在我的模型,控制器,表等都命名相同的情况下才能通过适当的变量。
现在,我有一个名为/ backend / facturen的路由,在英语中为/ backend / invoices。我尝试使用名称路由,但是,我发现这不是我想要的。
我的路线:
Route::resource('/backend/facturen', 'InvoicesController');
我在InvoicesController中的show方法:
public function show(Invoice $invoice) {
return view('backend.invoice.show', compact('invoice'));
}
数据库表名为“发票”。
到目前为止,我唯一可行的方法是将路线重命名为:
Route::resource('/backend/invoices', 'InvoicesController');
但是,当然,这不能解决我的问题。
我希望看到发票上的所有数据都显示在(荷兰)/ facturen路线上。
答案 0 :(得分:3)
默认情况下,资源控制器会寻找一个与URL的最后一个名称相同的变量,因此重命名URL也会更改该变量。
但是您可以tell Laravel to use a different name:
Route::resource('/backend/facturen', 'InvoicesController')->parameters([
'facturen' => 'invoice'
]);
答案 1 :(得分:1)
您还可以从id中获取变量本身,而无需使用laravel魔术来从URL中正确检测变量:
public function show($id) {
$invoice = Invoice::findOrFail($id);
return view('backend.invoice.show', compact('invoice'));
}
答案 2 :(得分:0)