Категория доступа и метод шоу Laravel - PullRequest
0 голосов
/ 02 июня 2018

Для отображения списка блогов у меня есть следующий маршрут

// Blog List
Route::name('blog')->get('blog', 'Front\BlogController@index');

Пример: http://www.mypropstore.com/blog/

Для отображения категории блога,

Route::name('category')->get('blog/{category}', 'Front\PostController@category');

Пример: http://www.mypropstore.com/blog/buy-sell

Для отображения сведений о блоге, комментариев и сведений о тегах мы используем промежуточное ПО «posts»

// 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');
});

Пример: http://www.mypropstore.com/posts/apartment-vs-villa-which-is-the-right-choice-for-you

Теперь яхочу изменить страницу URL сведений о блоге на

http://www.mypropstore.com/blog/apartment-vs-villa-which-is-the-right-choice-for-you-{{blogid}}

Пример: http://www.mypropstore.com/blog/apartment-vs-villa-which-is-the-right-choice-for-you-54

Если я изменю этот формат выше, это приведет к конфликту страниц категории.Любое тело знает, как настроить маршрутизацию для страницы с подробными сведениями о блоге (связующее ПО "сообщения")

Ответы [ 2 ]

0 голосов
/ 02 июня 2018

Предполагая, что часть 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 будет иметь приоритет.

Ваш контроллер должен иметь такой метод показа, как этот:

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);
    }
}
0 голосов
/ 02 июня 2018

Поскольку ваши категории не являются числами, вы можете разрешить конфликт, указав, что id всегда будет таким числом:

Route::get('/blog/{id}', 'BlogController@show')->where('id', '[0-9]+');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...