如果我在$request->input('users')
上拥有所有输入值,我该如何合并新的输入值?
这样的事情:
$request->merge(['users.dob' => '2000']);
但显然不起作用。
答案 0 :(得分:1)
首先,我们需要获取属于该数组的所有项目并暂时保存。
例如,
$users = $request->users;
这样,您就可以访问用户的数据,例如$users['name']
或$users['surname']
。
接下来,更新或添加您需要的任何数据。例如,像这样:
$users['dob'] = "2000";
$users['name'] = ucwords($request->users['name']);
...
完成后,我们将临时数组合并回$request
,如下所示:
$request->merge(['users' => $users]);
答案 1 :(得分:0)
试试这个:
$data= $request->input('users');
$data['dob'] = 2000;
答案 2 :(得分:0)
试试这个:
$request->request->add(['users.dob', '2000']);
似乎merge()
不再有用了。
答案 3 :(得分:0)
你可以尝试这个
public function __construct(\Illuminate\Http\Request $request)
{
$request->request->add(
['date_of_birth' => implode('-',$request->only('year', 'month', 'day'))]);
}
答案 4 :(得分:0)
尝试一下:
$request->request->add([
'new-field1' => 'value 1',
'new-field2' => 'value 2'
]);
答案 5 :(得分:0)
尝试一下:
$originalInput = $request->input('users');
$defaultValue = [
'dob' => 2000
];
$mergedResult = array_merge($defaultValue, $originalInput);
$request->merge([
'users' => $mergedResult
]);
如果您正在寻找更优雅的方法(阅读:困难的方法)并提高代码的可重用性,则可以按照以下步骤操作:
Request
对象。php artisan make:provider RegisterMergeInputRequestMacro
<?php
namespace App\Providers;
use Illuminate\Http\Request;
use Illuminate\Support\ServiceProvider;
class RegisterMergeInputRequestMacro extends ServiceProvider
{
/**
* Register services.
*
* @return void
*/
public function register()
{
Request::macro('mergeInput', function (string $name, array $defaultValue) {
$this->merge([
$name => array_merge($defaultValue, $this->input($name))
]);
});
}
}
ServiceProvider
文件中注册config/app.php
:return [
...
'providers' => [
...
App\Providers\RegisterMergeInputRequestMacro::class,
...
],
...
];
$request->mergeInput('users', [
'dob' => 2000
]);
答案 6 :(得分:0)
这是到目前为止我提出的最好的解决方案。 假设您要根据请求修改cover_image名称。
将所有表单请求存储在变量中
$ requestData = $ request-> all();
像这样修改数组
$ requestData-> cover_image =“您的新图像名称”;
保存您的数据
$ requestData-> save();