我正在尝试将参数id
从我的 View 传递到路线。我认为 blog.blade.php
,我做了以下操作:
<a href="{{ route('post', ['id' => $post->id ] ) }}" class="btn btn-primary">Read More </a>
我的路线如下:
Route::get('blog/post/{id}', [
'uses' => 'PostController@getPost',
'as' => 'post'
]);
我的 Controller 操作如下所示:
public function getPost( $id)
{
$post = Post::where('id','=',$id)->with('likes')->with('user')->first();
return view('section.blog', ['post' => $post]);
}
但是每当我加载页面时,我都会收到以下错误
Missing required parameters for [Route: post] [URI: blog/post/{id}]. (View: D:\Web Development\ACES\resources\views\section\blog.blade.php)
我通过在 View 上显示 $post->id
的值来检查它是否存在,并且它存在
更多
我尝试从 route 删除 {id}
部分,并将其设置为
Route::get('blog/post/', [
'uses' => 'PostController@getPost',
'as' => 'post'
]);
页面已加载,但链接如下所示:
http://localhost/blog/post?id=2
然后我在 Controller 中收到错误
为什么会发生这种情况?为什么参数没有传递到路由?
我使用的是 Laravel 5.7
更新
php artisan route:list
看起来像这样
+--------+----------+---------------------------------+------------------+------------------------------------------------------------------------+--------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+---------------------------------+------------------+------------------------------------------------------------------------+--------------+
| | GET|HEAD | / | home | Closure | web |
| | GET|HEAD | about-us | about | Closure | web |
| | GET|HEAD | aces-admin | admin.home | Closure | web |
| | GET|HEAD | aces-admin/all-posts | admin.allposts | Closure | web |
| | GET|HEAD | aces-admin/all-users | admin.allusers | Closure | web |
| | GET|HEAD | aces-admin/edit-events | admin.events | Closure | web |
| | GET|HEAD | aces-admin/edit-messages | admin.messages | Closure | web |
| | GET|HEAD | aces-admin/edit-study-materials | admin.study | Closure | web |
| | GET|HEAD | aces-admin/manage-photos | admin.photos | Closure | web |
| | GET|HEAD | api/user | | Closure | api,auth:api |
| | GET|HEAD | blog | blog | App\Http\Controllers\PostController@getIndex | web |
| | GET|HEAD | blog/create | create | Closure | web |
| | GET|HEAD | blog/post/{id} | post | App\Http\Controllers\PostController@getPost | web |
| | GET|HEAD | events | event | Closure | web |
| | GET|HEAD | gallery | gallery | Closure | web |
| | GET|HEAD | login | login | App\Http\Controllers\Auth\LoginController@showLoginForm | web,guest |
| | POST | login | | App\Http\Controllers\Auth\LoginController@login | web,guest |
| | POST | logout | logout | App\Http\Controllers\Auth\LoginController@logout | web |
| | POST | password/email | password.email | App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail | web,guest |
| | GET|HEAD | password/reset | password.request | App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm | web,guest |
| | POST | password/reset | password.update | App\Http\Controllers\Auth\ResetPasswordController@reset | web,guest |
| | GET|HEAD | password/reset/{token} | password.reset | App\Http\Controllers\Auth\ResetPasswordController@showResetForm | web,guest |
| | GET|HEAD | register | register | App\Http\Controllers\Auth\RegisterController@showRegistrationForm | web,guest |
| | POST | register | | App\Http\Controllers\Auth\RegisterController@register | web,guest |
+--------+----------+---------------------------------+------------------+------------------------------------------------------------------------+--------------+
最佳答案
尝试第二种方法并更新您的 Controller ,如下所示。
public function getPost(Request $request)
{
$id = $request->get('id');
$post = Post::where('id','=',$id)->with('likes')->with('user')->first();
return view('section.blog', ['post' => $post]);
}
关于php - 将参数传递给路由: Missing required parameters for [Route: post] error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53997046/