首页 > 解决方案 > 缺少路由所需的参数?

问题描述

首先我想说我的英语不太好,这是我第一次在这里发帖,如果我做错了什么,请原谅!好吧,我开始使用 Laravel 练习,我正在尝试为用户创建一个可以喜欢帖子的 url。我的 url 和控制器现在是Route::post('/post/{post}/like', [LikeController::class, 'postLike'])->name('post.like');这里 post 是我试图通过我的表单操作属性传递的帖子。这是我的表格:

@props(['post'])

<div {{ $attributes->merge(['class' => 'card-footer d-flex justify-content-around']) }}>
    <form action= "{{ route('post.like' , $post) }}"  method="post" >
        @csrf
        <button>submit</button>
    </form>
</div>

post 道具其实就是帖子的id!我将它作为这个组件的参数传递,如下所示::post="$post->id" i have also tried with associative array without it be necessary if u have only one parameter to pass, but still didnt work!{{ route('post.like' , ['post'=>$post]) }}``` 如果你想知道 id 是否实际上没有传递给组件,我试过 {{ dd($post) }} 并打印了它。我的控制器就是这个,它现在实际上并没有做任何事情。我只是想传递 id:

class LikeController extends Controller
{
    public function postLike(Post $post) {
        dd($post);
    }
}

毕竟我得到了错误:[Route: post.like] [URI: post/{post}/like] [Missing parameter: post] 缺少必需的参数。(查看:blog\resources\views\components\post\interaction.blade.php)

我有两天的时间来找到问题,我仍在尝试这一刻我正在发送这个....我找不到错误在哪里!如果你能帮助我,我将不胜感激!提前TY

标签: laravel-bladelaravel-8laravel-routing

解决方案


在 web.php 中试试这个,看看路由模型绑定到那个时候是否运行良好

Route::post('/post/{post}/like', function($post){
   dd($post);
})->name('post.like');

推荐阅读