Laravel 请求:获取解析后的路由参数 Draft 2 个改进

问题

如何在控制器中获取路由参数,假设定义了一个路由 photos/{id},如何取得路由参数 id 的值?

回答

如果需要在控制器中获取路由参数,只需在控制器方法的参数列表中把路由参数放在其他依赖注入项之后依次列出即可。举个例子,假设你的路由是这样定义的:

Route::put('photos/{id}', 'PhotoController@update');

那么,在控制器 PhotoControllerupdate 方法的参数列表中,在 Request 依赖注入之后列出 $id 路由参数即可:

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;

class PhotoController extends Controller
{
    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }
}

如果是在路由闭包中使用路由参数,做法类似:

use Illuminate\Http\Request;

Route::get('/test/{name}/{id}', function (Request $request, $name, $id) {
    return ['name' => $name, 'id' => $id];
});

参考

本 Wiki 尚未完善,邀您参与 如何撰写一篇高品质的 Wiki?
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!