我在laravel 4中定义了一条看起来像这样的路线:
Route::get('/books/{id}', 'HomeController@showBook');
Run Code Online (Sandbox Code Playgroud)
在url它显示/ books/1例如,现在我问是否有一种方法来显示书的名称,但也保持id作为SEO的路线中的参数
提前致谢
您可以根据需要向 url 添加任意数量的参数,如下所示:
Route::get('/books/{id}/{name}', 'HomeController@showBook');
Run Code Online (Sandbox Code Playgroud)
现在,当您想要创建此页面的 url 时,您可以执行以下操作:
URL::action('HomeController@showBook', ['id' => 1, 'name' => 'My awesome book']);
Run Code Online (Sandbox Code Playgroud)
更新:
如果你确定永远不会有两本书同名,你可以在 url 中使用书名。你只需要这样做:
Route::get('/books/{name}', 'HomeControllers@showBook');
Run Code Online (Sandbox Code Playgroud)
在您的函数中,您需要使用而不是showBook
从数据库中获取书籍。我强烈建议同时使用 id 和名称,否则你可能会遇到麻烦,因为我不认为书名总是唯一的。name
id