我在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',
有效。
但是如何在验证之前(以及在DB中保存之前)更改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()
函数无效
答案 0 :(得分:5)
覆盖prepareForValidation()
的{{1}}方法。
所以在FormRequest
:
App\Http\Requests\Panel\Users\UserRequest
答案 1 :(得分:0)
为什么不在控制器中进行验证?你可以在验证它之前改变它,然后再做你的db。
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'));
}