我有一个route('users.create')
格式的表单。
我将表单数据发送到此函数的contoller中:
public function store(UserRequest $request)
{
return redirect(route('users.create'));
}
为了验证,我在中创建了一个类
App\Http\Requests\Panel\Users\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()
函数没有影响
发布于 2018-02-26 15:38:41
重写FormRequest
的prepareForValidation()
方法。
所以在App\Http\Requests\Panel\Users\UserRequest
中
protected function prepareForValidation()
{
if ($this->has('first_name'))
$this->merge(['first_name'=>'Mr '.$this->first_name]);
}
发布于 2017-10-07 08:24:25
为什么不在控制器中进行验证呢?然后,您可以在验证之前更改内容,并在验证之后执行数据库操作。
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'));
}
发布于 2022-01-29 16:17:01
只需使用
$request->merge(['New Key' => 'New Value']);
在您的情况下,可以如下所示进行保存
$this->merge(['first_name'=>'Mr '.$this->first_name]);
https://stackoverflow.com/questions/46615292
复制相似问题