Интеллектуальная маршрутизация с контроллером - PullRequest
0 голосов
/ 01 декабря 2018

Есть способ автоматически установить маршруты, используя методы моего контроллера?

Пример: у меня есть PagesController с методами 'home' или 'index', 'about' и 'contact'.Могу ли я установить маршруты для каждого метода без явного их ввода?

Что-то вроде

Route::?('PagesController');

или

Route::get('/{page}', 'PagesController@{page}');

?

даЯ новичок в Laravel ...

1 Ответ

0 голосов
/ 01 декабря 2018

Нет, это невозможно.Предполагая, что вы используете стандартные методы RESTful, такие как индексирование, создание, редактирование, хранение, обновление и уничтожение, тогда да, вы можете просто написать:

Route::resource('cars', 'CarController');

, и вы создадите маршруты для списка автомобилей, маршрут для редактирования,create и т. д.

Это объясняется в Resource Controller часть документации.

Но помните, что вы всегда можете создавать маршруты, которые будут "перехватывать" все другие URL, например, выможет создать маршрут следующим образом:

Route::get('{page?}', 'PagesController@handle')->where('page', '.+')

И этот маршрут должен быть определен как последний из всех других маршрутов.

И теперь вы можете определить метод handle в этом контроллере следующим образом:

public function handle($page = 'home') 
{
    // here you can put any logic you want, for example:

   if (method_exists($this, $page)) {
       return $this->$page();
   }

   abort(404);
}

и теперь вы можете определить методы, соответствующие вашим URL-адресам, например:

public function home()
{
   // return some response here
}

public function index()
{
  // return some response here
}

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

...