Php Laravel 8缺少[Route:shop.show][URI:{language}/shop/{shop}]所需的参数
我有一个错误: 缺少[Route:shop.show][URI:{language}/shop/{shop}]所需的参数。(视图:C:\xampp\htdocs\friel\resources\views\inc\header.blade.php) 我想我理解我的问题,但我不确定 我正试图通过资源路径转到我的产品的详细信息页面。如果我没有我的语言切换器的话,这个很好用 我的语言切换器需要当前的routename,这样他就可以在前面添加eather'en'或'nl'。但是我的资源路线“shop.show”需要一个参数,而切换者不能给他 有解决办法吗?这是我的代码: 路线:Php Laravel 8缺少[Route:shop.show][URI:{language}/shop/{shop}]所需的参数,php,laravel,localization,parameter-passing,laravel-8,Php,Laravel,Localization,Parameter Passing,Laravel 8,我有一个错误: 缺少[Route:shop.show][URI:{language}/shop/{shop}]所需的参数。(视图:C:\xampp\htdocs\friel\resources\views\inc\header.blade.php) 我想我理解我的问题,但我不确定 我正试图通过资源路径转到我的产品的详细信息页面。如果我没有我的语言切换器的话,这个很好用 我的语言切换器需要当前的routename,这样他就可以在前面添加eather'en'或'nl'。但是我的资源路线“shop.s
Route::redirect('/', '/en');
Route::group(['prefix' => '{language}'], function () {
/* pages */
Route::get('/', [PagesController::class, 'index']) -> name('home');
/* shop is in the products section */
Route::get('/projects', [PagesController::class, 'projects']) -> name('projects');
Route::get('/about', [PagesController::class, 'about']) -> name('about');
Route::get('/contact', [PagesController::class, 'contact']) -> name('contact');
/* products */
Route::resource('shop', ProductController::class);
});
控制器(我给了参数产品,这样我的语言切换器就不会崩溃了):
header.blade.php(我的语言切换器所在的位置):
根据show方法,您接受两个参数,$product和$id,从show方法中删除$product,因为您没有指定它在函数中的作用,也没有将其传递给视图,我认为这就是问题所在,您可以这样保留它
public function show ($id)
{
...
}
OK,所以我用了一种不好的方式,我只是在header.blade.php中设置了一个isset和空值,这是可行的,但如果有人知道更好的答案,lmk header.blade.php:
<header>
<h1><a href="{{ route('home', app()->getLocale()) }}">FRILE</a></h1>
<nav>
<ul>
<li><a href="{{ route('shop.index', app()->getLocale()) }}">{{ __('nav.shop') }}</a></li>
<li><a href="{{ route('projects', app()->getLocale()) }}">{{ __('nav.projects') }}</a></li>
<li><a href="{{ route('about', app()->getLocale()) }}">{{ __('nav.about') }}</a></li>
<li><a href="{{ route('contact', app()->getLocale()) }}">{{ __('nav.contact') }}</a></li>
<ul id="languageSwitcher">
@isset($product)
<li><a href="{{ route(Route::currentRouteName(), ['en', $product->id]) }}">en</a></li>
<li><a href="{{ route(Route::currentRouteName(), ['nl', $product->id]) }}">nl</a></li>
@endisset
@empty($product)
<li><a href="{{ route(Route::currentRouteName(), 'en') }}">en</a></li>
<li><a href="{{ route(Route::currentRouteName(), 'nl') }}">nl</a></li>
@endempty
</ul>
</ul>
</nav>
</header>
@isset(产品)
@尾端集
@空($产品)
@可爱的
在分析问题之前,我在网上搜索了将近3小时,当时问题很容易解决
只需验证是否为所有路由实例提供了app()->getLocale(),如:
{{ route('password.update', app()->getLocale() ) }}
如果要传递额外的参数,例如: Shop.blade.php文件=>
<p><a href="{{ route('shop.show', [app()->getLocale(), $product -> id]) }}">{{ $product -> name }}</a></p>
使用app()-.getLocale()作为第二个参数:
<p><a href="{{ route('shop.show', [$product ->
id,app()->getLocale()]) }}">{{ $product -> name }}</a></p>
也许对你有用。欢迎来到SO。。。请注意传递给
路由
帮助程序的关联数组,您应该尝试并遵循此操作。这不起作用,我的应用程序认为我需要提供第二个参数,因为语言切换器,我已经尝试过了。我仍然会犯同样的错误。谢谢你的回答。
<header>
<h1><a href="{{ route('home', app()->getLocale()) }}">FRILE</a></h1>
<nav>
<ul>
<li><a href="{{ route('shop.index', app()->getLocale()) }}">{{ __('nav.shop') }}</a></li>
<li><a href="{{ route('projects', app()->getLocale()) }}">{{ __('nav.projects') }}</a></li>
<li><a href="{{ route('about', app()->getLocale()) }}">{{ __('nav.about') }}</a></li>
<li><a href="{{ route('contact', app()->getLocale()) }}">{{ __('nav.contact') }}</a></li>
<ul id="languageSwitcher">
@isset($product)
<li><a href="{{ route(Route::currentRouteName(), ['en', $product->id]) }}">en</a></li>
<li><a href="{{ route(Route::currentRouteName(), ['nl', $product->id]) }}">nl</a></li>
@endisset
@empty($product)
<li><a href="{{ route(Route::currentRouteName(), 'en') }}">en</a></li>
<li><a href="{{ route(Route::currentRouteName(), 'nl') }}">nl</a></li>
@endempty
</ul>
</ul>
</nav>
</header>
{{ route('password.update', app()->getLocale() ) }}
<p><a href="{{ route('shop.show', [app()->getLocale(), $product -> id]) }}">{{ $product -> name }}</a></p>
<p><a href="{{ route('shop.show', [$product ->
id,app()->getLocale()]) }}">{{ $product -> name }}</a></p>