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

时间:2019-02-02 19:23:21

标签: php laravel post routing routes

如果我有类似以下的路线。

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

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

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

3 个答案:

答案 0 :(得分:2)

根据laravel文档,您的操作方式是正确的。

  

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

 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

答案 1 :(得分:1)

可以,但是我喜欢在返回视图时像这样传递ID

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

答案 2 :(得分:1)

每次公开这样的url参数时,都必须使用get request参数将其传递给例如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 }

相关问题