Mar*_*ria 4 laravel laravel-validation laravel-5.5
我有一个表格route('users.create')。
我将表单数据发送到该函数的contoller中:
public function store(UserRequest $request)
{
return redirect(route('users.create'));
}
Run Code Online (Sandbox Code Playgroud)
为了验证,我在
App \ Http \ Requests \ Panel \ Users \ UserRequest;
class UserRequest extends FormRequest
{
public function rules()
{
if($this->method() == 'POST') {
return [
'first_name' => 'required|max:250',
Run Code Online (Sandbox Code Playgroud)
有用。
但是,如何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') {
Run Code Online (Sandbox Code Playgroud)
它在之前有效,if($this->method() == 'POST') {但对验证或old()功能无效
小智 9
覆盖的prepareForValidation()方法FormRequest。
因此在App\Http\Requests\Panel\Users\UserRequest:
protected function prepareForValidation()
{
if ($this->has('first_name'))
$this->merge(['first_name'=>'Mr '.$this->first_name]);
}
Run Code Online (Sandbox Code Playgroud)
为什么不在控制器中进行验证?您可以在验证之前进行更改,然后再进行数据库操作。
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'));
}
Run Code Online (Sandbox Code Playgroud)
另请参阅https://laravel.com/docs/5.5/validation
| 归档时间: |
|
| 查看次数: |
4265 次 |
| 最近记录: |