【问题标题】:get user input using Request in laravel and pass it for validation在 laravel 中使用 Request 获取用户输入并将其传递给验证
【发布时间】:2016-05-21 22:15:20
【问题描述】:

我是 laravel 的新手。这里我有一个表单,我必须填写一个名称字段并将其发送到控制器的 store() 方法进行验证。否则它将显示自定义错误。但是每当我提交带有或不带有输入的表单时,我都会收到以下错误。

传递给 Illuminate\Validation\Factory::make() 的参数 1 必须是 类型数组,给定字符串,调用 C:\xampp\htdocs\mylaravel\vendor\laravel\framework\src\Illuminate\Support\Facades\Facade.php 在第 221 行并定义

出于实验目的,我使用以下格式捕获用户输入

$data = $request->input('name');

create.blade.php:

<h1>login form</h1>
      @if($errors->has())
        <div><span> Opps !! </span></br>
          <ul>
            @foreach ($errors->all() as $error)
                <li> {{ $error }}</li>    
            @endforeach
          </ul>
        </div>
      @endif
   {!!Form::open(array('url'=>'user','method'=>'POST', 'files'=>true)) !!}

   {!!Form::label('name','Your name')!!}
   {!!Form::text('name')!!}
   </br>

   {!!Form::submit('submit')!!}
    {!!Form::close()!!}

userController.php 文件中的store() 方法:

public function store(Request $request)
{
    //
    $data = $request->input('name');

    $rules = array(
       'name' => 'unique:users,name|required|alpha_num'

    );

    // Create a new validator instance.
    $validator = Validator::make($data, $rules);
    if($validator->fails()){

        $errors=$validator->messages();
        return Redirect::route('user.create')->withErrors($validator);

    }else{

            return Redirect::route('user.index');
        }

    }

}

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    根据您的错误,Validator 期望它的参数是数组,但您在那里传递一个字符串为 $data= $request-&gt;input('name') 。因此,您应该在 Validator::make() 中传递数组。下面的代码应该适合你。

    $validator = Validator::make($request->all(), [
        'name' => 'unique:users,name|required|alpha_num'
    ]);
    

    如果您想了解更多,这里是doc

    【讨论】:

      【解决方案2】:

      您需要在Validator::make 中传递array

      现在您正在以$data 变量的形式传递字符串。

      例如:

      $validator = Validator::make(
          array('name' => 'Dayle'),
          array('name' => 'required|min:5')
      );
      

      文档:https://laravel.com/docs/4.2/validation

      【讨论】:

        【解决方案3】:

        您已将参数作为数组传递给验证,因此您的代码将是

        public function store(Request $request)
        {
        //
            $data = $request->all();
        
        $rules = array(
           'name' => 'unique:users,name|required|alpha_num'
        
        );
        
        // Create a new validator instance.
        $validator = Validator::make($data, $rules);
        if($validator->fails()){
        
            $errors=$validator->messages();
            return Redirect::route('user.create')->withErrors($validator);
        
        }else{
        
                return Redirect::route('user.index');
            }
        
        }
        
        }
        

        【讨论】:

          猜你喜欢
          • 2019-06-29
          • 2011-10-22
          • 2015-03-31
          • 2014-10-18
          • 1970-01-01
          • 1970-01-01
          • 2020-11-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多