$ this->验证自定义重定向

时间:2015-09-22 05:02:21

标签: validation redirect laravel-5

我有一个带有四个标签的表单,所以在验证后它总是在第一个标签上重定向我,但我希望它重定向我的那个有错误信息

这是我的代码

$this->validate($request,
                [
                'name' => 'required|min:3|alpha_spaces', 
                'date_of_birth' => 'required|date|date_format:"Y-m-d"', 
                'place_of_birth' => 'required',
                'nationality' => 'required',
                'address' => 'required',
                'port_name' => 'required',
                'contact_number' => 'required|digits_between:8,15|numeric',
                'religion' => 'required',
                'education_level' => 'required',
                'marital_status' => 'required',
                'interview_method' => 'required',
                'can_be_interviewed_via' => 'required',
                'date_to' => 'required',
                'date_from' => 'required',
                'country' => 'required',
                ]); 

并且我在使用提交按钮和隐藏文件选择标签的每个标签上进行重定向

if ($data['selecttab'] == 'tab0') { 
            return redirect("fdws/".$id."/edit?tab=tab0");
        }elseif($data['selecttab'] == 'tab1'){ 
            return redirect("fdws/".$id."/edit?tab=tab1");
        }elseif($data['selecttab'] == 'tab2'){ 
            return redirect("fdws/".$id."/edit?tab=tab2");  
        }else{ 
            return redirect("fdws/".$id."/edit?tab=tab3");
        }

如果没有验证,则可以正常使用

3 个答案:

答案 0 :(得分:0)

<德尔> 在你打电话给'$ this-&gt;验证($ request,...`set` $ redirect`到你的`if($ data [&#39; selecttab&#39;] ==&#39; tab0&#39;){...`声明。因此,我建议先做你的if语句并有一个名为`$ redirect`的变量来捕获if语句的结果     if($ data [&#39; selecttab&#39;] ==&#39; tab0&#39;){             $ redirect =&#34; fdws /&#34;。$ id。&#34; / edit?tab = tab0&#34 ;;         } elseif($ data [&#39; selecttab&#39;] ==&#39; tab1&#39;){             $ redirect =&#34; fdws /&#34;。$ id。&#34; / edit?tab = tab1&#34 ;;         } elseif($ data [&#39; selecttab&#39;] ==&#39; tab2&#39;){             $ redirect =&#34; fdws /&#34;。$ id。&#34; / edit?tab = tab2&#34 ;;         }其他{             $ redirect =&#34; fdws /&#34;。$ id。&#34; / edit?tab = tab3&#34 ;;         } 然后`$ this-&gt; validate(...)`。

抓一点!我犯了一个大错。 According to官方Laravel 5.0文档,并且在查看Illuminate\Foundation\ValidatesRequests特征时,使用Controller Validation时,不可能只选择重定向路由而不修改特征或其他代码。我认为使用Form Request会给你带来你想要的力量而不那么麻烦。

答案 1 :(得分:0)

找到解决方案, 我做得那样,工作得很好:)。

$validator = Validator::make($request->all(), [
            'can_be_interviewed_via' => 'required',
        ]);

        if ($validator->fails()) {
            return redirect("fdws/".$id."/edit?tab=tab3")
                        ->withErrors($validator)
                        ->withInput();
        }

答案 2 :(得分:0)

在Laravel 5中,使用中间件作为控制器和路由的助手。这对你有很大帮助。