Laravel объединить два маршрута, чтобы иметь простой URL - PullRequest
0 голосов
/ 20 мая 2018

в laravel у меня есть следующие маршруты:

Route::get('/', 'HomeController@index')->name('home');
Route::get('/showContent/{content}', 'HomeController@showContent');

сначала для главной страницы шоу, а secode для отдельной записи шоу, сейчас я пытаюсь объединить их для одного маршрута как:

Route::get('/{content?}', 'HomeController@index')->name('home');

, если content не равно NULL, веб-приложение должно показывать один пост, в противном случае показывать домашнюю страницу, как с этим контроллером

public function index($slug)
{
    if ($slug != null) {
        $this->showContent($slug);
    } else {
        return view('layouts.frontend.content');
    }
}

, но я получаю ошибку для функции index, как я могурешить это?

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Вы можете назначить null по умолчанию в функции param

  public function index($slug=null)
  {
     if (!$slug) {
         return view('layouts.frontend.content');
     }
     $this->showContent($slug);
  }
0 голосов
/ 20 мая 2018

Вам необходимо установить значение по умолчанию от $slug до null в сигнатуре вашего метода следующим образом:

public function index($slug = null)
{
    if ($slug != null) {
        $this->showContent($slug);
    } else {
        return view('layouts.frontend.content');
    }
}

Это позволяет параметру быть необязательным на стороне контроллера, так как Laravel Routerвызовет метод действия контроллера без каких-либо параметров при доступе к корню /.

Следует иметь в виду, что определение маршрута как /{parameter?}, по сути, является универсальным, что означает любойURL , который не соответствует другому определению маршрута или не является физическим файлом на диске, будет соответствовать этому маршруту (например, / foo, / bar и т. Д.), Поэтому учитывайте это при выборе этого подхода, так как вывсегда будет выполнять часть showContent() для непревзойденных URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...