路线参数作为复合弹头

时间:2017-06-30 20:10:58

标签: laravel laravel-5.4 laravel-routing

我正在尝试为视图使用复合slug(两个路径参数)。

方案

“John Doe”写了一本名为“Blue Pill”的书。我希望每本书的slug看起来像这样/books/john-doe-blue-pill

在路线中,我有:

Route::get('/books/{author}-{slug}', 'BookController@show')->name('show_book');

在列表页面中,我指的是每一个:

<a href="{{ route('show_book', ['author' => str_slug($book->author->name), 'slug' => $book->slug]) }}">

问题

控制器操作将这些参数打印为:author = johnslug = doe-blue-pill

拒绝选项(及其原因)

  1. 我可以使用斜杠Route::get('/books/{author}/{slug}', ...,但我会尽量保持平衡,并将水平保持在最低限度。
  2. 我可以将john-doe-blue-pill保存到数据库作为本书的slug,但如果作者后来决定改变他们的名字(例如婚后的女作家),这会变得混乱。
  3. 有什么想法吗?

0 个答案:

没有答案