显示我使用以下路线的博客列表
// Blog List
Route::name('blog')->get('blog', 'Front\BlogController@index');
Ex:http://www.mypropstore.com/blog/
要显示博客类别,
Route::name('category')->get('blog/{category}', 'Front\PostController@category');
Ex:http://www.mypropstore.com/blog/buy-sell
要显示博客详情,评论和标签详情,我们使用“帖子”中间件
// Posts and comments
Route::prefix('posts')->namespace('Front')->group(function () {
Route::name('posts.display')->get('{slug}', 'PostController@show');
Route::name('posts.tag')->get('tag/{tag}', 'PostController@tag');
Route::name('posts.search')->get('', 'PostController@search');
Route::name('posts.comments.store')->post('{post}/comments', 'CommentController@store');
Route::name('posts.comments.comments.store')->post('{post}/comments/{comment}/comments', 'CommentController@store');
Route::name('posts.comments')->get('{post}/comments/{page}', 'CommentController@comments');
});
Ex:http://www.mypropstore.com/posts/apartment-vs-villa-which-is-the-right-choice-for-you
现在我想将博客详细信息页面更改为
http://www.mypropstore.com/blog/apartment-vs-villa-which-is-the-right-choice-for-you- {{blogid}}
Ex:http://www.mypropstore.com/blog/apartment-vs-villa-which-is-the-right-choice-for-you-54
如果我更改上述格式,则会冲突类别页面。任何机构都知道如何设置博客详细信息页面的路由(中间件“帖子”)
答案 0 :(得分:1)
假设blogid
部分位于建议路线的末尾......
http://www.mypropstore.com/blog/apartment-vs-villa-which-is-the-right-choice-for-you-{{blogid}}
...是数字,您可以这样做:
对于帖子详情页面的路线定义,请使用以下内容:
Route::name('posts.display')
->get('blog/{slug}-{id}', 'PostController@show')
->where('id', '[0-9]+');
这样做可确保此路线仅与模式blog/{slug}-{id}
之后的路径匹配,但会限制路线的id
部分必须为数字,即组成只有一个或多个数字。
您需要确保此路线之前与category
路线相匹配,否则category
路线将优先。
你的控制器应该有这样的show方法:
class PostController extends Controller
{
public function show($slug, $id)
{
// $id will contain the number at the end of the route
// $slug will contain the slug before the number (without the hyphen)
// You should be able to do this to get your post.
$post = Post::findOrFail($id);
dd($post);
}
}
答案 1 :(得分:0)
由于您的类别不是数字,您可以解决冲突,指定ID始终是这样的数字:
Route::get('/blog/{id}', 'BlogController@show')->where('id', '[0-9]+');