我在同一控制器中为同一视图创建了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');
但是第一个不起作用。这是我的问题.....
答案 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');