在我发布此问题之前,它运行良好。 但是有一段时间,当我继续开发laravel项目时,我遇到了这个问题。
错误:路由[user / alamat / 2]未定义。
//Routes
//web.php
Route::get('user/alamat/{id}','UserTransaksiController@index')->name('user/alamat/{id}');
//Blade
<a href={{ route('user/alamat/'.Auth::user()->iduser) }} >
答案 0 :(得分:0)
刀片中使用的路由功能用于路由名称。在命名路由时,您不能传递参数,可以将路由命名为user.alamat
,而在刀片服务器模板中则可以使用route('user.alamat', auth()->id())
。
将参数作为数组传递到route('name', [$yourParameters])
中。
Route::get('user/alamat/{id}','UserTransaksiController@index')->name('user.alamat');
<a href="{{ route('user.alamat', auth()->id()) }}" ></a>
<!-- OR -->
<a href="/user/alamat/{{ auth()->id() }}" ></a>
答案 1 :(得分:0)
我将逐步介绍您应该重构的内容。
首先,您应该重命名路线。名称方法应该是这样的。
Route::get('user/alamat/{id}','UserTransaksiController@index')->name('user.alamat');
然后,您可以在示例中使用相同的名称从应用程序中的任何地方引用路由,它应该像这样(注意如何调用参数):
<a href="{{ route('user.alamat', ['id' => auth()->user()->id]) }}" ></a>
这时应该解决错误,如果您想改善代码,可以进一步阅读。
返回您的路线对我来说,在路线中放置阿拉木图而在控制器上放置 Transaksi 对我来说是没有意义的。根据要检索的信息,它们应该保持一致以使代码可读。假设您正在检索 Transaksi ,我看到它翻译为 Deal ,所以您应该有类似的内容。
Route::get('users/{id}/transaksis','UserTransaksiController@index')->name('user.transaksi.index');
请注意,我更改了路线。 Route::get('user/{id}/transaksis'....
读这部分内容的方式就像是要获取与用户相关的信息,然后是该特定用户的ID,然后是其他相关模型。使用相同的原理,名称应为...->name('user.transaksi.index')
我在名称上使用了 index ,因为您不能在同一控制器上使用更多方法,并且路由名称也应该保持可读性。
最后,您可以转到RouteServiceProvider
,然后在引导方法中添加此内容。 Route::model('user', User::class);
可以更改您的路线,如下所示:
Route::get('users/{user}/transaksis','UserTransaksiController@index')->name('user.transaksis.index');
这称为“路由模型绑定”,它使您可以像这样在控制器中获取整个模型:
public function index(User $user)
{
//user should have the entire user model instance
//if you have relations defined you can do this
$user->transaksis;
//the rest of your code to return goes here
}
考虑到User可以是任何其他模型,我以所有这些示例为例。如果要针对特定情况进行简化,则可以从控制器内部获取用户ID,而无需像这样将其作为参数传递:
public function index(Request $request)
{
//Option 1 using the user from the request (you do not need to pass the request from the route, it is filled automatically by LAravel
$request->user()->transaksis;
//Option 2 using the auth helper
auth()->user()->transaksis;
//There are a lot of options to get the user
//the rest of your code to return goes here
}