Laravel route() 传递数据

Posted

技术标签:

【中文标题】Laravel route() 传递数据【英文标题】:Laravel route() pass data 【发布时间】:2021-06-21 16:33:54 【问题描述】:

我正在使用 Laravel 8 编写博客,但遇到了问题。

我希望用户能够对帖子发表评论。这样做我会存储他们评论的帖子的 ID。

这是我的评论表单:

<form method="POST" action=" route('comment.store', $post )">
            @csrf
            <div class="form-group">
                <textarea name="kommentar" class="form-control" rows="3"></textarea>
            </div>
            <button type="submit" class="btn btn-primary">Submit</button>
        </form>

我的控制器方法来存储评论:

    public function store(Request $request, $postid)

    $comment = new Comment();
    $comment->author = Auth::user()->name;
    $comment->text = $request->input('kommentar');
    $comment->post_id = $postid;
    $comment->save();

    return redirect('/post/'$postid );

还有我的 web.php

Route::resource('comment', CommentController::class);

我想使用 route() 辅助函数,因为我希望以后能够更改 URL,而不必到处更改。我不知道如何传递表单数据和帖子 ID,以便我可以存储评论所属的帖子。

提前致谢。

【问题讨论】:

【参考方案1】:

您可以通过 hidden 字段从您的视图中传递 post id 并使用 laravel Request 从您的 Controller store 方法接收它。

查看

<form method="POST" action=" route('comment.store') ">
    @csrf
    <input type="hidden" name="post_id" value=" $post_id ">
    <div class="form-group">
        <textarea name="kommentar" class="form-control" rows="3"></textarea>
    </div>
    <button type="submit" class="btn btn-primary">Submit</button>
</form>

路线

Route::resource('comment', CommentController::class);

控制器

public function store(Request $request) 
    $comment = new Comment();
    $comment->author = Auth::user()->name;
    $comment->text = $request->kommentar;
    $comment->post_id = $request->post_id;
    $comment->save();

    return redirect('/post/' .$request->post_id );

【讨论】:

我复制了你的代码,不幸的是 id 对我不起作用。我试图通过添加 dd($request->post_id); 来添加 postid;在 save 方法之前,它返回 null。 检查$post 变量上的view 部分。 dd($post) 值有没有? 当我在视图中添加 dd($post) 时,它会返回一个帖子 那么,你的post_id 是什么? 将您返回的post 中的post_id 设置为您的$post 变量。

以上是关于Laravel route() 传递数据的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 向控制器传递数据

在超链接中传递参数/数据 - laravel Blade

将数据从控制器传递到刀片视图 laravel

将变量传递给Laravel {{route}}帮助器

laravel 将数据从刀片文件传递到控制器

在laravel中查看路由动态数据数组