【问题标题】:change value of $request before validation in laravel 5.5在 laravel 5.5 中验证之前更改 $request 的值
【发布时间】:2018-03-18 19:46:37
【问题描述】:

我在route('users.create') 有一个表格。

我将表单数据发送到它的控制器中的这个函数:

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() 功能无效

【问题讨论】:

    标签: laravel laravel-validation laravel-5.5


    【解决方案1】:

    简单使用

    $request->merge(['New Key' => 'New Value']);
    

    在你的情况下,可以如下保存

    $this->merge(['first_name'=>'Mr '.$this->first_name]);
    

    【讨论】:

      【解决方案2】:

      覆盖FormRequestprepareForValidation() 方法。

      所以在App\Http\Requests\Panel\Users\UserRequest:

      protected function prepareForValidation()
      {
          if ($this->has('first_name'))
              $this->merge(['first_name'=>'Mr '.$this->first_name]);
      }
      

      【讨论】:

        【解决方案3】:

        为什么不在控制器中进行验证?您可以在验证之前更改内容,然后再进行数据库操作。

        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'));
        }
        

        另见https://laravel.com/docs/5.5/validation

        【讨论】:

        • 我的方法不能做到吗?请查看我的更新。
        猜你喜欢
        • 2021-09-08
        • 1970-01-01
        • 1970-01-01
        • 2013-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-21
        • 2018-12-17
        相关资源
        最近更新 更多