php - 将参数传递给 Route :缺少 [Route: post] 错误所需的参数
问题描述
我正在尝试将参数id
从我的视图传递到路由。我认为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'
]);
我的控制器动作看起来像:
public function getPost( $id)
{
$post = Post::where('id','=',$id)->with('likes')->with('user')->first();
return view('section.blog', ['post' => $post]);
}
但是每当我加载页面时,我都会收到以下错误
[Route: post] [URI: blog/post/{id}] 缺少必需的参数。(查看:D:\Web Development\ACES\resources\views\section\blog.blade.php)
我$post->id
通过在视图上显示它来检查它的值是否存在并且它存在
更多
我尝试{id}
从路线中删除部分并使其像
Route::get('blog/post/', [
'uses' => 'PostController@getPost',
'as' => 'post'
]);
页面加载,但链接看起来像:
http://localhost/blog/post?id=2
然后我在控制器中得到错误
为什么会这样?为什么没有将参数传递给路由?
我正在使用 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 |
+--------+----------+---------------------------------+------------------+------------------------------------------------------------------------+--------------+
解决方案
尝试第二种方法并更新您的控制器,如下所示。
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]);
}
推荐阅读
- java - 大型开关盒(60 种不同的盒) - 如何减少?或细化代码
- angular - 推送到 FormArray 不会更新 mat-table
- amazon-web-services - 如何将在特定端口上运行的 Flask Server 链接到域名?
- javascript - 从 jquery 事件中按需选择性地关闭单个子 python 进程
- javascript - Velocity 模板 - 在velocity foreach 中使用java 脚本变量
- python - OpenCV 无法从 MJPEG 流中读取视频
- php - 在 WooCommerce 我的帐户查看订单页面的订单详细信息下添加自定义文本
- javascript - 数据发布到服务器时自动刷新
- python - 为什么重新定义 __getattr__() 的对象会抛出 TypeError?
- javascript - 如何在 Array.map() 函数中使用箭头函数和 react