Красивые URL с использованием методов RESTful Laravel’s Route :: resource

Я только начал изучать Laravel и хотел бы узнать, возможно ли создать ресурс Route ::, который позволил бы мне получить доступ к указанному ниже URL-адресу с помощью методов RESTful:

Я хотел бы, чтобы URL выглядел так:

http://example.com/articles/2014/09/22/this-is-the-article-title

И я хотел бы получить доступ к этому из моего ArticlesController с помощью:

//GET articles/{year}/{month}/{day}/{title}
public function show($year, $month, $day, $title) {
$article = //find article in DB
return View::make('articles.show')->with('article', $article);
}

Из того, что я до сих пор собирал, это можно как-то сделать, выполнив что-то похожее на приведенное ниже в файле rout.php:

Route::resource('year.month.day.articles', 'ArticlesController');

Но это не совсем подходит мне.

У кого-нибудь есть предложения?

2

Решение

Контроллеры ресурсов полезны для создания контроллеров RESTful, которые образуют основу API. Общий синтаксис такой:

Route::resource('resourceName', 'ControllerName');

Это создаст семь разных маршрутов в один вызов, но на самом деле это просто удобный метод для этого:

Route::get('/resourceName',                 'ControllerName@index');
Route::get('/resourceName/{resource}',      'ControllerName@show');
Route::get('/resourceName/create',          'ControllerName@create');
Route::get('/resourceName/{resource}/edit', 'ControllerName@edit');
Route::post('/resourceName',                'ControllerName@store');
Route::put('/resourceName/{resource}',      'ControllerName@update');
Route::delete('/resourceName/{resource}',   'ControllerName@destroy');

URL-адреса только основанный на имени ресурса, который вы указываете, и имена методов встроены. Я не знаю, каким образом вы можете изменить те, используя контроллеры ресурсов.

Если вы хотите красивые URL-адреса, назначьте эти маршруты без использования контроллера ресурсов:

Route::get('/articles/{year}/{month}/{day}/{title}', 'ArticlesController@show');

Обратите внимание, что если вы используете show метод, это будет конфликтовать с любым REST-полным URL, который вы могли определить ранее ( show Метод в контроллере ресурсов будет ожидать только 1 переданный параметр, а именно ID ресурса, который будет отображаться). По этой причине я бы рекомендовал вам изменить имя этого метода на другое.

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector