为什么部分未在laravel 5控制器方法中执行?

时间:2016-04-12 11:37:13

标签: laravel-5

public function index1()
{




    $g = Request::Input('grade');
    $s = Request::Input('subject');

    if(strcmp($g,'Select A Grade')==0 || strcmp($s,'Select A Subject')==0) {

        if (strcmp($s, 'Select A Subject') == 0) {
            // Session::flash('msg', 'Please select the Subject.');
            return redirect()->back()->withInput();

        } else if (strcmp($g, 'Select A Grade') == 0) {
            // Session::flash('msg', 'Please select the Grade.');
            return redirect()->back()->withInput();

        }


    }

else{

        $u = DB::table('upldtbls')->where('grade',$g)->where('subject',$s)->get();


        return view('2Eng',compact('u'));
}

}

以上是控制器方法。主要的其他部分正确执行。但主要的是如果没有像我想要的那样执行。在主要if条件下,如果下拉框值等于那意味着他们没有从下拉框中选择一个选项,我希望保持在同一页面上。任何人都可以搞清楚这个烂摊子吗?

{!! Form::select('Select A Grade', array('' => 'Select A Grade','2' => '2', '3' => '3','4' => '4'), 'Select A Grade', ['class' => 'form-control'])
{!! Form::select('Select A Subject', array('' => 'Select A Subject','English' => 'English', 'Mathematics' => 'Mathematics','Environmental Studies' => 'Environmental Studies'), 'Select A Subject', ['class' => 'form-control']) !!}

1 个答案:

答案 0 :(得分:0)

if部分可能未被执行,因为条件未得到满足。根据您的检查,检查$g$s是否等于0。如果您只是想查看这些输入参数是否为空/空白,请将if语句修改为:

if(!$g || !$s){
...
}

此外,您应该使用Request::Input代替$_GET,但是您需要将其修复为以下其中一项:

# Laravel 5.1.x or earlier
$g = Request::Input('grade');
$s = Request::Input('subject');

# Laravel 5.2.x or later
$g = $request->input('grade');
$s = $request->input('subject');

<强>更新

问题在于您的select框。您错误地命名了它们,如果您执行了一些基本调试,您会注意到这一点。按如下方式更新它们:

{!! Form::select('grade', array('' => 'Select A Grade','2' => '2', '3' => '3','4' => '4'), null, ['class' => 'form-control'])
{!! Form::select('subject', array('' => 'Select A Subject','English' => 'English', 'Mathematics' => 'Mathematics','Environmental Studies' => 'Environmental Studies'), null, ['class' => 'form-control']) !!}

即。第一个参数应该是字段的name,它将传递给$_GET。更新表单后,请将if声明更新为我上面的建议。