如何使用 Request $request 从 url 获取 id? (Laravel 5.3)

Posted

技术标签:

【中文标题】如何使用 Request $request 从 url 获取 id? (Laravel 5.3)【英文标题】:How can I get id from url with Request $request? (Laravel 5.3) 【发布时间】:2017-08-08 11:19:01 【问题描述】:

我在视图上的链接href是这样的:

<a href=" route('message.inbox.detail.id', ['id' => $message->id]) " class="btn btn-default">
    <span class="fa fa-eye"></span>  trans('button.view') 
</a>

我的路线是这样的:

Route::get('message/inbox/detail/id/id', ['as'=>'message.inbox.detail.id','uses'=>'MessageController@detail']);

点击后,url显示如下:

http://myshop.dev/message/inbox/detail/id/58cadfba607a1d2ac4000254

我想通过Request $request 获取 id

在控制器上,我尝试这样:

public function detail(Request $request)

    dd($request->input('id'));

结果:空

我该如何解决?

【问题讨论】:

【参考方案1】:

你可以这样得到它

$request->route('id')

在请求类中你可以这样访问它

$this->route('id')

我通常在验证字段时使用它以确保它是唯一的,并且在进行更新时我需要按 ID 排除模型

【讨论】:

这是正确答案,值得注意的可能不是id。您传递的参数应与路由定义中的参数名称相同。 @rosscooper 没错。如果您这样定义路由:Route::apiresource('car', 'Api\CarController'),则必须使用$request-&gt;route('car')$request-&gt;route()-&gt;parameters['car']。您可以使用来自控制器方法参数的request()$request 或请求对象内的$this 获取请求对象。【参考方案2】:

这是因为你通过 url 传递 id 参数,你应该使用这样的形式发送它

!! Form::open(['route'=>' route('message.inbox.detail.id', 'method'=> 'POST']) !!
 <input type="hidden" name="id" value=" $message->id " />
!! Form::submit( trans('button.view') , ['class'=>'btn btn-default']) !!
!! Form::close() !!

现在您可以通过控制器中的请求访问

public function detail(Request $request)



 dd($request->input('id'));

【讨论】:

【参考方案3】:

通过这个获取id:

public function detail($id)

   dd($id);

【讨论】:

不能使用参数Request $request吗? 对于get,这是你必须将它传递给你的控制器的方式,Request $request 可以用于其他http方法。【参考方案4】:

对于使用较新版本的 laravel 寻找答案的人,您可以使用以下方式获取路由 ID:

带有模型绑定的示例路由

Route::put('/post/post, [PostController::class, 'update]);

$this-&gt;route('id') 在这种情况下由于模型绑定将不起作用。

您可以这样做:

// using in controller
request()->route('post.id);

// using in form request
$this->route('post.id');

【讨论】:

以上是关于如何使用 Request $request 从 url 获取 id? (Laravel 5.3)的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Laravel 正确模拟 Illuminate\Http\Request 类

如何使用 strpos($_SERVER['REQUEST_URI'] 从 url 段生成活动类

如何从request.FILES获取文件名?

如何从 http.request() 中正确捕获异常?

如何从 laravel 5.0 中的 Request 类中获取所有查询字符串

将参数从 Angularjs 传递给 Django