简单的商店验证请求不会返回错误,只是重定向到带有302错误的表单视图

时间:2018-03-02 13:52:32

标签: php laravel laravel-5

我不明白为什么Laravel不会向我发送验证错误并将我重定向到302错误的视图。

我只是在视图中有简单的表单,只发送它:

            @else
                        {{Form::open(array('route'=>'Link.store','name'=>'storeLink'.$key))}}
                        <div class="md-form input-group">
                            <input type="hidden" name="route_name" value="{{$route['name']}}">
                            <input type="hidden" name="href" value="{{$route['uri']}}">
                            <input pattern="[a-zA-Zéè \-]{3,35}" required class="form-control" type="text" name="title"
                                   id="linkTitle{{$key}}"
                                   value=""
                                   placeholder="Ajoutez ici un titre à ce lien pour le rendre disponibles pour les menus">
                            <span class="input-group-btn">
                             <button type="button"
                                     class="btn btn-default ml-2 btnUpdateLink">Ajouter</button>
                        </span>

                            {{Form::close()}}
                        </div>
                    @endif

表单将数据发送到我的store方法:

            public function store(LinkRequest $request)
                {

                    //dd($request->all());

                    try{

                        Link::create($request->all());
                        return redirect(route('Permission.index'))->with('success-message','Lien crée');

                    }catch (Exception $e){
                        $errorCode = $e->errorInfo[1];
                        dd($errorCode);
                        if($errorCode == 1062){
                            return redirect(route('Link.index'))
                                ->with('error_message','Un lien existe déjà avec ce titre')
                                ->with('create_name',$request->get('title'));
                        }
                    }

                }

这是我的LinkRequest类:

                public function rules()
                {
                    return [
                        'title'=> array(
                            'required',
                            'max:35',
                            'unique:links,title,'.$this->Link,
                            'regex:[a-zA-Zéè]',
                        ),
                        'route_name'=>array(
                            'required'
                        ),
                        'href'=>array(
                            'required'
                        ),

                    ];
                }

感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

这是FormRequests的正常行为我相信:

来自https://laravel.com/docs/5.6/validation#creating-form-requests

  

如果验证失败,将生成重定向响应以将用户发送回其先前的位置。错误也将闪现到会话中,以便可以显示。

您的错误应该可以在您的Blade模板中使用变量$ errors!

访问

来自the official documentation的示例:

@if($errors->any())
    <ul>
    @foreach ($errors->all() as $error)
      <li>{{ $error }}</li>
    @endforeach
    </ul>
@endif

答案 1 :(得分:0)

您需要确保将CSRF字段添加到表单中。这是通过在表单内部执行{{ csrf_field() }}来完成的。

此外,您的表单中似乎有一些不正确的格式。 md-form div开头在表单内,而结束时则在表单之外。

@else
    {{Form::open(array('route'=>'Link.store','name'=>'storeLink'.$key))}}
        {{ csrf_field() }}
        <div class="md-form input-group">
            <input type="hidden" name="route_name" value="{{$route['name']}}">
            <input type="hidden" name="href" value="{{$route['uri']}}">
            <input pattern="[a-zA-Zéè \-]{3,35}" required class="form-control" type="text" name="title"
                   id="linkTitle{{$key}}"
                   value=""
                   placeholder="Ajoutez ici un titre à ce lien pour le rendre disponibles pour les menus">
            <span class="input-group-btn">
             <button type="button" class="btn btn-default ml-2 btnUpdateLink">Ajouter</button>
            </span>
        </div>
    {{Form::close()}}
@endif

答案 2 :(得分:0)

我做了这个,但没有显示错误(它在我的其他视图中有效):

@if(Session::has('error_message'))
                <div class="alert alert-danger" id="flash_message"><em><i class="fas fa-exclamation-triangle mr-2"></i>
                        {{ session('error_message') }}</em></div>
            @endif
相关问题