我不确定为什么找不到它,但我需要在控制器中获取所需参数的值.例如,如果路由是/route/{param},如果有人输入了/route/123,我希望得到123:

public function some_method(Request $request)
{
    // get {param} value, 123
}

我所看到的就是它要么用于路由模型绑定,要么不使用Request(https://laravel.com/docs/10.x/routing#route-model-binding):

use App\Http\Controllers\UserController;
use App\Models\User;
 
// Route definition...
Route::get('/users/{user}', [UserController::class, 'show']);
 
// Controller method definition...
public function show(User $user)
{
    return view('user.profile', ['user' => $user]);
}

*但也许我甚至不需要Request $request,因为我可以通过request()助手获得它?

推荐答案

您可以同时拥有Request个参数、值参数或模型绑定,laravel足够智能,可以识别您期望的数据类型(由于为参数指定了类型).因此您可以执行以下操作:

use App\Http\Controllers\YourController;
 
// Route definition...
Route::get('/route/{param}', [YourController::class, 'some_method']);
 
// Controller method definition...
public function some_method(Request $request, string $param)
{
    ... // for /route/123 $param will have '123' value
}

如果您要获取的id是某个型号的id,那么您可以同时拥有Request和型号绑定:

use App\Http\Controllers\YourController;
use App\Models\YourModel;
 
// Route definition...
Route::get('/route/{param}', [YourController::class, 'some_method']);
 
// Controller method definition...
public function some_method(Request $request, YourModel $param)
{
    ... // for /route/123 you will get YourModel with id 123
}

Laravel相关问答推荐

如何在Laravel中从多行中获取合并数组?

Laravel:通过数据透视表数据限制多对多Eager 加载

Laravel 语法 GroupBy 获取列到数组

Carbon(laravel)处理无效日期

调用未定义的函数 App\Http\Controllers\ [函数名]

控制器中的 Laravel Auth 用户 ID

Laravel 4 的 Cron 作业(job)

使用'with'时,Laravel belongsTo 返回 null

路由模型绑定不起作用

条带 api 判断现有卡

laravel 4 - 如何限制(采取和跳过)Eloquent的 ORM?

Laravel 初学者的良好开端

如果值存在于另一个字段数组中,Laravel 验证规则

约定表名(带下划线)

为什么 BroadCastEvent 在 Laravel 中排队?如何阻止它?

升级到 laravel 5.3 后错误 datetime format: 1292 Incorrect datetime value: '0000-00-00 00:00:00'

Laravel 中的单会话登录

Laravel homestead IP地址不起作用

Laravel 从公共删除目录

laravel中的动态网址?