Пользовательская структура URL для Laravel - PullRequest
0 голосов
/ 04 мая 2019

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

Прямо сейчас у меня есть такая структура:

  1. mydomain.com / products / product-name - ProductController
  2. mydomain.com / статьи / имя-статьи - ArticleController
  3. mydomain.com / пользователи / user-name - UserController

Я хотел бы преобразовать это так:

  1. mydomain.com / product-name - ProductController
  2. mydomain.com / article-name - ArticleController
  3. mydomain.com / user-name - UserController

У меня уже есть слизни в общей таблице БД. Не проблема определить, какой контроллер следует использовать для «product-name».

Я хочу знать, какова лучшая практика в этом случае. Где я могу разместить свою логику, которая связывает слаг «product-name» с ProductController?

Должен ли я использовать промежуточное ПО или есть какой-то другой подход к этому?

1 Ответ

0 голосов
/ 04 мая 2019

Что вы хотите, вы можете указать, что в вашем web.php, как

Route::get('user-{name}', 'UserController@show')->name('users.show');

и в UserController

function show(Request $request, User $name){
    return $name;
}

должно работать нормально, но как насчет других конечных точек, таких как индексирование, удаление, редактирование и т. Д.?

То, что я чувствую, будет похоже

Route::delete('user-{name}', 'UserController@delete')->name('users.delete');

а как же index()? и даже в этом случае name должен быть уникальным, иначе это приведет к исключительным результатам.

Может быть, если вы поясните это, я могу отредактировать свой ответ в соответствии с этим, но

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

В вашей модели

public function getRouteKeyName()
{
    return 'name';
}

Теперь, если вы хотите настроить его больше, вы можете использовать

RouteServiceProvider.php boot() метод

public function boot()
{
    parent::boot();
    Route::bind('flat_member', function ($value) {
        return 'user-' . $value;
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...