如何在laravel中重定向和显示错误验证

时间:2019-06-10 12:11:46

标签: php laravel laravel-5 laravel-5.1

美好的一天, 我是laravel Framework的新手,我遇到了两个问题:-
第一个
 我想在2秒后自动重定向到我的页面。
第二个
我进行自定义函数调用(存在) 如果此函数返回true数据,我想打印“名称在...之前存在”,但是这里的问题是,当此函数返回true并打印消息时,表格被暂停。 如何防止输入值重置表格? 这是我的代码

控制器代码

enter code here
public function add(Request $request)

{
        // start add
    if($request->isMethod('post'))
    {
        if(isset($_POST['add']))
        {
            // start validatio array
        $validationarray=$this->validate($request,[
            //'name'  =>'required|max:25|min:1|unique:mysql2.products,name|alpha',
            'name'  =>'required|alpha',
            'price' =>'required|numeric',

            ]);
                // check name is exist

            if(true !=dBHelper::isExist('mysql2','products','`status`=? AND `deleted` =? AND `name`=?',array(1,1,$validationarray['name'])))
            {

                $product=new productModel();
                // start add
                $product->name=$request->input('name');
                $product->save();
                $add=$product->id;
                $poducten=new productEnModel();
                $poducten->id_product=$add;
                $poducten->name=$request->input('name');
                $poducten->price=$request->input('price');
                $poducten->save();
                $dataview['message']='data addes';




            }else{
                $dataview['message']='name is exist before';
            }

        }
    }
    $dataview['pagetitle']="add product geka";
    return view('productss.add',$dataview);
}

这是我的路线

Route::get('/products/add',"produtController@add");
    Route::post('/products/add',"produtController@add");

这是我的观点

@extends('layout.header')
@section('content')
    @if(isset($message))
        {{$message}}
    @endif

    @if(count($errors)>0)
        <div class="alert alert-danger">
            <ul>
              @foreach($errors->all() as $error)
                  <li>{{$error}}</li>

                  @endforeach

            </ul>

        </div>
        @endif

    <form role="form"  action="add" method="post" enctype="multipart/form-data">
        {{csrf_field()}}
        <div class="box-body">
            <div class="form-group{{$errors->has('name')?'has-error':''}}">
                <label for="exampleInputEmail1">Employee Name</label>
                <input type="text" name="name" value="{{Request::old('name')}}" class="form-control" id="" placeholder="Enter Employee Name">
            </div>

            <div class="form-group">
                <label for="exampleInputEmail1">Email Address</label>
                <input type="text" name="price" value="{{Request::old('price')}}" class="form-control" id="" placeholder="Enter Employee Email Address">
            </div>
        </div>
        <!-- /.box-body -->
        <div class="box-footer">
            <button type="submit" name="add" class="btn btn-primary">Add</button>
        </div>
    </form>

@endsection

3 个答案:

答案 0 :(得分:1)

//use $request instead of $_POST
if($request->isMethod('post'))
    {
        if(isset($request['add']))
        {
            // start validatio array
        $validationarray=$this->validate($request,[
            //'name'  =>'required|max:25|min:1|unique:mysql2.products,name|alpha',
            'name'  =>'required|alpha',
            'price' =>'required|numeric',

            ]);
                // check name is exist

答案 1 :(得分:0)

我希望我理解你的问题。 代替使用{{Request :: old('price')}},使用{{old('price')}} 重新加载页面后,这应该检索表单数据。

答案 2 :(得分:0)

尝试以下代码以在视图页面中显示错误

   $validator = Validator::make($params, $req_params);
    if ($validator->fails()) {
      $errors = $validator->errors()->toArray();
      return Redirect::to($web_view_path)->with('errors', $errors);
    }

您想使用ajax自动重定向到另一页提交表单,并在settimeout方法下面使用。

setTimeout(function(){  // Here mentioned the redirect query }, 3000);