【问题标题】:Header.blade component locale switch - LARAVEL 8 (how to?)Header.blade 组件区域设置开关 - LARAVEL 8(如何?)
【发布时间】:2021-08-13 19:41:33
【问题描述】:

我正在尝试让我的语言环境前缀适用于我的所有路由。

它通常可以工作,但我遇到了这个问题,标题语言按钮正在寻找来自特定页面的参数(我认为)。

我的标题组件中的标签:

<li><a href="{{ route(Route::CurrentRouteName(), 'nl') }}">nl</a></li>
<li><a href="{{ route(Route::CurrentRouteName(), 'fr') }}">fr</a></li>
<li><a href="{{ route(Route::CurrentRouteName(), 'en') }}">en</a></li>

在我的标题组件中。

一旦我尝试打开一个基于变量作为路由参数的页面,我就会收到错误消息: routing-error-message

Web.php

Route::redirect('/', '/nl');

Route::prefix('/{locale}')->group(function () {

    Route::get('/', 'App\Http\Controllers\Controller@showLanding')->name('home');

    Route::get('intenties-van-de-site', 'App\Http\Controllers\IntentionsController@showIntentionsSite')->name('intenties-van-de-site');
    Route::get('intenties-bij-een-ontwerp', 'App\Http\Controllers\IntentionsController@showIntentionsProject')->name('intenties-bij-een-ontwerp');
    Route::get('architectuur', 'App\Http\Controllers\ArchitectureController@showArchitecture')->name('architectuur');

    Route::get('architectuur/{project}',  'App\Http\Controllers\ArchitectureController@showProject')->name('project-title');
});

还有来自这些项目页面之一的链接的 sn-p:

<a href="{{ route('project-title', ['project' => '1978-reel-boom', 'locale' => app()->getLocale() ]) }}">
    <img alt="1978 Reel Boom" title="1978 Reel Boom" src="{img url}">
    <p>1978 Reel Boom</p>
</a>

有没有办法修复标头路由?

提前致谢!
一个菜鸟

【问题讨论】:

    标签: php laravel parameters routes setlocale


    【解决方案1】:

    Route::CurrentRouteName() 为您提供命名路由,但您缺少参数。

    您可以使用request()-&gt;route()-&gt;parameters获取参数数组。

    例如,对于 url '/en/architectuur/something',转储 request()-&gt;route()-&gt;parameters 会返回以下数组。

    [
        'lang' => 'en',
        'project' => 'something'
    ]
    

    然后,您只需使用array_merge 更改语言键。

    @foreach (['nl', 'fr', 'en'] as $lang)
      @php($params = array_merge(request()->route()->parameters, ['lang' => $lang]))
      <li>
        <a href="{{ route(Route::CurrentRouteName(), $params) }}">nl</a>
      </li>
    @endforeach
    

    如果您愿意,也可以内联

    @foreach (['nl', 'fr', 'en'] as $lang)
      <li>
        <a href="{{ route(Route::CurrentRouteName(), array_merge(request()->route()->parameters, ['lang' => $lang])) }}">nl</a>
      </li>
    @endforeach
    

    【讨论】:

    • 这正是我想要的! tyvm
    猜你喜欢
    • 1970-01-01
    • 2020-01-15
    • 2021-06-05
    • 1970-01-01
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多