Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 8缺少[Route:shop.show][URI:{language}/shop/{shop}]所需的参数_Php_Laravel_Localization_Parameter Passing_Laravel 8 - Fatal编程技术网

Php Laravel 8缺少[Route:shop.show][URI:{language}/shop/{shop}]所需的参数

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:shop.show][URI:{language}/shop/{shop}]所需的参数。(视图:C:\xampp\htdocs\friel\resources\views\inc\header.blade.php)

我想我理解我的问题,但我不确定

我正试图通过资源路径转到我的产品的详细信息页面。如果我没有我的语言切换器的话,这个很好用

我的语言切换器需要当前的routename,这样他就可以在前面添加eather'en'或'nl'。但是我的资源路线“shop.show”需要一个参数,而切换者不能给他

有解决办法吗?这是我的代码:

路线:

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>