我在同一控制器中的同一视图中创建了2个函数,但最后一条路由的函数仅能正常工作

时间:2019-03-31 19:46:01

标签: laravel laravel-5

我在同一控制器中为同一视图创建了2个函数,但最后一个仅起作用

这是我的职责

class ProspectController extends Controller {

    public function get_prospects() {
        $prospects = DB::select('select * from prospect');
        return view('prospect', ['prospects' => $prospects]);
    }

    public function get_courses() {
        $courses = DB::select('select * from course');
        return view('prospect', ['courses' => $courses]);
    }

}

这是我的路线

Route::get('prospect', 'ProspectController@get_courses');
Route::get('prospect', 'ProspectController@get_prospects');

这是我的视图文件

@foreach($courses as $course)

      <input type="checkbox" id="{{$course->course_id}}" 
      name="course_intrested[]" value="{{$course- >course_name}}">
      <label for="defaultCheck">{{$course-  >course_name}}</label>

@endforeach

但是我遇到了这个错误

 Undefined variable:
 courses (View:C:\xampp\htdocs\laravel\customer_inquiry_model\resources\
 views\prospect.blade.php)

但是当我这样改变路线时,课程功能正常工作

 Route::get('prospect', 'ProspectController@get_prospects');
 Route::get('prospect', 'ProspectController@get_courses');

但是第一个不起作用。这是我的问题.....

1 个答案:

答案 0 :(得分:0)

您正在使用重复路线。因此,仅使用最后一条路线

在第一种情况下,您传递了prospects变量并尝试使用courses,因此它会引发错误。

public function get_prospects() {
    $prospects = DB::select('select * from prospect');
    return view('prospect', ['prospects' => $prospects]); // <---- 'prospects' should be 'courses'

}

但是即使您更改了变量名,您的逻辑仍然是错误的。您需要设置两个不同的路由(并且很可能设置两个不同的模板文件),如下所示:

Route::get('courses', 'ProspectController@get_courses');
Route::get('prospect', 'ProspectController@get_prospects');

更新

正如您在评论中提到的那样,如果您希望将课程和前景传递给同一视图,则可以执行以下操作:

public function get_prospects() {
    $prospects = DB::select('select * from prospect');
    $courses = DB::select('select * from course');
    return view('prospect', ['prospects' => $prospects, 'courses' => $courses]);

}

您需要删除第二条路线并将其保留为以下内容:

Route::get('prospect', 'ProspectController@get_prospects');