Laravel 4.2 продолжает маршрутизацию

Представьте, что есть следующая структура URL:

someurl.axyz/{post-slug}
someurl.axyz/{page-slug}

post-slug и page-slug хранятся в уникальном столбце таблицы базы данных. Каков «самый» элегантный способ обработки маршрутов с Laravel 4.2 (и если есть разница с Laravel v5.2)?

Я решил это, используя параметр привязки к модели. Следующий код находится внизу файла route.php. Я хотел бы знать, есть ли более простое решение для этой задачи.

Route::bind('directslug', function($value, $route) {
    $post = Post::where('slug', $value)->first();
    if ($post) {
        return $post;
    }
    $page = Page::where('slug', $value)->first();
    if ($page) {
        return $page;
    }

    throw new NotFoundHttpException;
});
Route::get('{directslug}', function(Post $post) {
    return $post;
});
Route::get('{directslug}', function(Page $page) {
    return $page;
});

App::missing(function($exception) {
    return Response::view('error.missing', array('title' => '404 Page not Found'), 404);
});

person user3714582    schedule 26.07.2016    source источник
comment
Для 4.2 вам нужно вручную привязать параметр, как вы сделали, а 5.2 привязывает его из коробки.   -  person thefallen    schedule 26.07.2016


Ответы (1)


Я обрабатываю все с помощью привязки модели маршрута, что очень похоже на ваше решение.

На мой взгляд, вы должны иметь отдельную модель для каждого маршрута, иначе вы можете получить сообщение с одним и тем же фрагментом страницы... даже если я уверен, что вы позаботились об этом. В конце концов, вы используете два разных маршрута, почему вы должны всегда запрашивать публикацию, если кто-то ищет страницу?

person clod986    schedule 27.07.2016