【发布时间】:2015-05-05 10:46:31
【问题描述】:
我正在处理一个用户可以更新其出生日期的表单。该表单为用户提供了day、month 和year 的3 个单独字段。在服务器端,我当然想将这 3 个单独的字段视为一个值,即yyyy-mm-dd。
所以在验证和更新我的数据库之前,我想通过将year、month 和day 与- 字符连接来更改表单请求以创建一个date_of_birth 字段,以创建我需要的日期格式(并且可能取消设置原来的 3 个字段)。
使用我的控制器手动实现这一点不是问题。我可以简单地获取输入,将由- 字符分隔的字段连接在一起并取消设置它们。然后我可以在传递给处理处理的命令之前手动验证。
但是,我更喜欢使用 FormRequest 来处理验证并将其注入到我的控制器方法中。因此,我需要一种在执行验证之前实际修改表单请求的方法。
我确实发现了以下类似的问题:Laravel 5 Request - altering data
它建议覆盖表单请求上的all 方法,以包含在验证之前操作数据的逻辑。
<?php namespace App\Http\Requests;
class UpdateSettingsRequest extends Request {
public function authorize()
{
return true;
}
public function rules()
{
return [];
}
public function all()
{
$data = parent::all();
$data['date_of_birth'] = 'test';
return $data;
}
这一切都很好,有利于验证,但是覆盖all 方法实际上并没有修改表单请求对象上的数据。因此,在执行命令时,表单请求包含原始未修改的数据。除非我使用现在被覆盖的all 方法来提取数据。
我正在寻找一种更具体的方法来修改我的表单请求中的数据,而不需要调用特定的方法。
干杯
【问题讨论】:
标签: php validation laravel laravel-5