带有 POST 请求的 Laravel 路由 URL 参数

Posted

技术标签:

【中文标题】带有 POST 请求的 Laravel 路由 URL 参数【英文标题】:Laravel Routing URL Parameters with POST Request 【发布时间】:2019-06-27 01:03:55 【问题描述】:

如果我有如下路线。

Route::post('/user/id', 'UserController@my_function');

如何将控制器功能设置为这样,以便可以使用 URL 参数和 POST 请求正文数据?我希望它类似于下面的代码,但这是正确的吗?

public function my_function($id, Request $request)

【问题讨论】:

【参考方案1】:

没关系,但我喜欢在返回视图时像这样传递 id

public function my_function(Request $request)
return view('myfile',['id'=>$id]);

【讨论】:

这是另一种方法,谢谢,我可能在某些场合使用这种方法【参考方案2】:

根据 laravel 文档,您的做法是正确的。

如果您的控制器方法也需要路由参数的输入,请在其他依赖项之后列出您的路由参数。例如,如果您的路线是这样定义的:

 Route::put('user/id', 'UserController@update');

您仍然可以键入提示 Illuminate\Http\Request 并通过如下定义控制器方法来访问您的 id 参数:

这是一个使用您发送的数据的示例:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller

    /**
     * Update the given user.
     *
     * @param  Request  $request
     * @param  string  $id
     * @return Response
     */
    public function update(Request $request, $id)
    
       $request->all() // here you're acessing all the data you send it
       $user = User::find($id) // here you're getting the correspondent user from the id you send it

    

欲了解更多信息:docs

【讨论】:

【参考方案3】:

当你像这样公开你的 url 参数时,你必须使用 get 请求参数来传递它,例如 localhost:3000/user/1

Route::get('/user/id', 'UserController@my_function');

public function my_function($id) //do something

但是,如果您在保留下传递一个 id,即通过帖子隐藏。

Route::post('/user', 'UserController@my_function');

public function my_function(Request $request) // do something $request->id

也许这就是你想做的事

Route::put('user/id', 'UserController@my_function');

public function my_function($id) //do something

【讨论】:

感谢您的回复,但您的第二个示例不是我想做的,但我感谢您的回复

以上是关于带有 POST 请求的 Laravel 路由 URL 参数的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 中发送带有 json 对象数据的 post 请求

Laravel 6 从 POST JSON 获取信息

使用带有参数对象的 Axios Post 没有返回数据

Laravel5 路由

带有 url 参数的 Laravel 发布路由

Laravel:Ajax 发布请求路由