Php 在验证之前编辑请求数据
请求数据: 我想做什么 我正在尝试创建一个Php 在验证之前编辑请求数据,php,laravel,Php,Laravel,请求数据: 我想做什么 我正在尝试创建一个if语句,以检查 $request->invoice_data['discount']==null然后将其设置为0 $request->product\u credit['discount']==null然后将其设置为0 在验证过程之前,因为验证将失败。 我所尝试的: 我在Laravel中找到了一个名为prepareForValidation()的方法,它使用$this->merge([…])这是我正在寻找的,但问题是我无法在发票\u数据和产品\u信用中
if语句
,以检查
$request->invoice_data['discount']==null
然后将其设置为0
$request->product\u credit['discount']==null
然后将其设置为0
在验证过程之前,因为验证将失败。
我所尝试的:
我在Laravel中找到了一个名为
prepareForValidation()
的方法,它使用$this->merge([…])
这是我正在寻找的,但问题是我无法在发票\u数据
和产品\u信用
中访问折扣设置属性默认值的更干净的方法,而不是在请求有效负载中编辑:
<?php
$data =
[
"invoice_data" => [
"discount" => null,
],
"product_credit" => [
"discount" => null,
]
];
$keyWhitelist = [
'invoice_data',
'product_credit'
];
foreach ($data as $key => $entry) {
if(!in_array($key, $keyWhitelist)) {
continue;
}
if(key_exists('discount',$entry)) {
if ($entry['discount'] === null) {
$data[$key]['discount'] = 0;
}
}
}
var_export($data);
Model {
protected $attributes = [
'inovice_data' => 0,
'discount' => 0,
'product_credit' => 0
];
}
这样,如果没有提供值,或者未定义值或null,Eloquent将在数据库中填充时将这些属性设置为已定义的默认值。不熟悉laravel,但我会搜索类似“中间件”的东西来处理请求
array (
'invoice_data' =>
array (
'discount' => 0,
),
'product_credit' =>
array (
'discount' => 0,
),
)
Model {
protected $attributes = [
'inovice_data' => 0,
'discount' => 0,
'product_credit' => 0
];
}