[英]Laravel error: Missing required parameters for route
我不斷收到此錯誤
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 工作正常但頁面不會因為這個錯誤加載??
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>
我在 laravel 5.2 中的解決方案
{{ Form::open(['route' => ['votes.submit', $video->id], 'method' => 'POST']) }}
<button type="submit" class="btn btn-primary">
<span class="glyphicon glyphicon-thumbs-up"></span> Votar
</button>
{{ Form::close() }}
我的路由文件(在中間件下)
Route::post('votar/{id}', [
'as' => 'votes.submit',
'uses' => 'VotesController@submit'
]);
Route::delete('votar/{id}', [
'as' => 'votes.destroy',
'uses' => 'VotesController@destroy'
]);
這是因為我們沒有將 id 傳遞給路由,因為我們在路由中傳遞了變量 {nickname}。 它不是從視圖中獲取的。
你應該 href="{{ route('user.profile', $nickname) }} 這樣它就可以將變量發送到路由。
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']);
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.