Я создал 2 функции для одного и того же представления в одном контроллере, но функция последнего маршрута работает только - PullRequest
0 голосов
/ 31 марта 2019

Я создал 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 голосов
/ 31 марта 2019

Вы используете дубликаты маршрутов. Поэтому используется только последний маршрут .

И в первом случае вы передаете переменную 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');

UPDATE

Как вы упомянули в комментарии, если вы хотите передать курсы и перспективы на одно и то же представление, вы можете сделать следующее:

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');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...