【发布时间】:2020-01-27 12:33:59
【问题描述】:
我有一个 Laravel 的 SEO 项目,我想使用路由来配置友好的动态 url。 这是我的路线:
# Designs
Route::get('/d/{article}-{tag}-{design_name}-{design_id}',['as' => 'web.product_design', 'uses' => 'ProductController@getProductDesign']);
我想建立这个 SEO 友好的网址:/d/mug-harry-potter-wingardium-leviosa-xfdsfsdf
这就是我所说的进入任何 laravel 刀片视图的路径:
route('web.product_design',['article' => 'mug'), 'tag' => str_slug('Harry Potter'), 'design_name' => str_slug('Wingardium Leviosa'), 'design_id' => 'xfdsfsdf'])
问题是在 ProductController 内部我没有收到我想要的这些参数。我认为 Laravel 何时启动和何时完成 slug 会感到困惑。 比如在控制器方法中...
# Product Design Page
public function getProductDesign($article,$tag,$design_name,$design_id) {
dd($article); // It gives me back 'mug', that's right.
dd($tag); // It return me 'harry', is WRONG, I want to get 'harry-potter'.
dd($design_name); // It return me 'potter', is WRONG, I want to get 'wingardium-leviosa'.
dd($design_id); // It return me 'wingardium-leviosa-xfdsfsdf', is WRONG, I want to get 'xfdsfsdf'.
}
如何构建一个对 SEO 友好的 url,同时能够在控制器方法中正确获取参数?
【问题讨论】:
-
使用
/而不是- -
不,我需要用'-'创建它
-
如果参数
article有-,laravel怎么知道。例如:'harry-potter' -
这里有一个很好的解释和教程:github.com/cviebrock/eloquent-sluggable,这里很好:itsolutionstuff.com/post/…