【问题标题】:Laravel Routing URL Parameters with POST Request带有 POST 请求的 Laravel 路由 URL 参数
【发布时间】:2025-12-19 02:35:07
【问题描述】:

如果我有如下路线。

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

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

public function my_function($id, Request $request){}

【问题讨论】:

    标签: php laravel post routing routes


    【解决方案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 }

      【讨论】:

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