我有一个GET端点,它接受布尔active和整数ID作为查询参数.大概是GET /stuff?active=1&ID=10吧.

这两个参数都不是必需的.

如果我做GET /stuff?active=1,并try 通过做$request->get('active')Request中检索值,我会得到一个字符串形式的值1.

如果启用了declare(strict_types=1),并且服务中的方法

public function getBy(bool $active = null) {
   ...
}

并以Controller为例调用该方法

 $controllerMethod->getBy($request->get('active'))

会得到Argument #0 ($active) must be of type ?bool, string given,这显然不是很好的结果.

现在我的问题是:Is there a way to cast the request parameters prior to them reaching the 100? Perhaps in a 101 class somehow?

我很清楚我可以在Controller米中跑$request->has('active') ? $request->get('active') : null米,但这只是额外的杂乱,我想搬到其他地方go .

推荐答案

把这件事外包给FormRequest个班级应该适合以下两种情况之一:

/**
 * Handle a passed validation attempt.
 */
protected function passedValidation(): void
{
    $this->replace(['active' => (bool)$this->active]);
}

或者甚至在内部验证之前执行相同的操作:

protected function prepareForValidation(): void

Documentation

Php相关问答推荐

如果再次调用SESSION_START(),会话.gc-max是否会重新启动?或者它是从第一次创建会话开始计算的?

PHP DateInterval天数不一致

Laveel Livewire Get Groupby姓名列表

将部分产品排除在WooCommerce的计算附加费之外

如何将隐式乘法添加到PHPPEG基本计算器语法中?

SendGrid响应PHP

如何使用MS Graph PHP SDK V2下载文件

限制某些产品只能在WooCommerce的特定邮政编码/邮政编码范围内发货

将购物车按钮重定向到Checkout-Wooccommerce

在WooCommercel邮箱通知上添加来自Apaczka插件的选定交付点

如何在 apache Laragon - laravel 10 中允许方法 DELETE?

防止 WooCommerce 在前端加载全尺寸图像

以编程方式同步 WPML 翻译更改 Woocommerce 产品销售价格

服务器升级到新的mysql版本8.0.34后查询错误

laravel Eloquent 模型的问题

AWS S3:当对象名称包含 % 时复制对象失败并出现错误 - 无效的复制源编码

使用 foreach php 将记录正确分配给正确的父级

图像未在 Laravel Ajax Crud 中显示

使用现有的htaccess的PHP路由脚本

使用 RSA 2048 公钥验证 RSA PKCS#1v1.5 SHA 256 签名