在laravel验证之前更改$ request的值5.5
问题描述:
我有一个表格route('users.create')
。
我表单数据发送给该函数在它的位指示:
public function store(UserRequest $request)
{
return redirect(route('users.create'));
}
进行验证创建在
应用一类\ HTTP \请求\面板\用户\ UserRequest;
class UserRequest extends FormRequest
{
public function rules()
{
if($this->method() == 'POST') {
return [
'first_name' => 'required|max:250',
它的工作原理。
但我怎么能验证之前更改first_name
值(并保存在数据库之前)?
(也有失败的验证,我想在old('first_name')
更新看到新的数据
我试试这个:
public function rules()
{
$input = $this->all();
$input['first_name'] = 'Mr '.$request->first_name;
$this->replace($input);
if($this->method() == 'POST') {
它的工作原理if($this->method() == 'POST') {
之前,但它不是影响验证或old()
功能
答
为什么不能在控制器中进行验证?在你验证它之前,你可以改变一些事情,然后再做你的数据库事情。
public function store(Request $request)
{
$request->first_name = 'Mr '.$request->first_name;
Validator::make($request->all(), [
'first_name' => 'required|max:250',
])->validate();
// ToDo save to DB
return redirect(route('users.create'));
}
答
覆盖的FormRequest
因此,在应用程序的prepareForValidation()方法\ HTTP \请求\面板\用户\ UserRequest:
protected function prepareForValidation()
{
if ($this->has('first_name'))
$this->merge(['first_name'=>'Mr '.$this->first_name]);
}
这难道不是可能在我的方法上做到这一点?请参阅我的更新。 – Maria