1. ホーム
  2. php

[解決済み] Laravelのエラーです。ルートに必要なパラメータがありません

2022-02-16 14:56:33

質問

このようなエラーが発生します。

ErrorException in UrlGenerationException.php line 17:

どのページがロードされても、私がログインしているとき。

私のナビはこんな感じです。

@if(Auth::guest())
                <li><a href="{{ url('/login') }}">Log In</a></li>
                <li><a href="{{ url('/register') }}">Sign Up</a></li>
            @else
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{{ Auth::user()->nickname }}<span class="caret"></span></a>
                    <ul class="dropdown-menu">
                        <li><a href="{{ route('user.profile') }}">Profile</a></li>
                        <li><a href="{{ route('user.settings') }}">Settings</a></li>
                        <li><a href="{{ url('/logout') }}">Log Out</a></li>
                    </ul>
                </li>
            @endif

私が抱えている問題は、{{ route('user.profile') }}が動作していないことです?

私はリンクをヒットすると、www.mydomain.com/User/SCRATK/profile は正常に動作しますが、ページがこのエラーのbecuaseロードされません?

Missing required parameters for [Route: user.profile] [URI: user/{nickname}/profile].

これは私のルートファイルです。

Route::group(['middleware' => 'web'], function () {
Route::auth();

Route::get('/', ['as' => 'home', 'uses' => 'BaseController@index']);

Route::group(['namespace' => 'User', 'prefix' => 'user'], function(){
    Route::get('{nickname}/settings', ['as' => 'user.settings', 'uses' => 'SettingsController@index']);
    Route::get('{nickname}/profile', ['as' => 'user.profile', 'uses' => 'ProfileController@index']);
});
});

解決方法は?

ルートのパラメータを route メソッドなどを使用します。

<li><a href="{{ route('user.profile', $nickname) }}">Profile</a></li>
<li><a href="{{ route('user.settings', $nickname) }}">Settings</a></li>

それは、どちらのルートも {nickname} をルート宣言に追加しました。私は $nickname を変更する必要があります。 $nickname を適切な値/変数に変更します。例えば、以下のようなものになります。

<li><a href="{{ route('user.settings', auth()->user()->nickname) }}">Settings</a></li>