1

次の URL 構造があるとします。

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

post-slugpage-slug一意のデータベース テーブル列に格納されます。Laravel 4.2でルートを処理する「最も」エレガントな方法は何ですか(Laravel v5.2との方法に違いがある場合)?

モデルへのバインディングパラメーターを使用してこれを解決しました。次のコードは、routes.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);
});
4

1 に答える 1

0

あなたのソリューションとほぼ同じように、 route model bindingですべてを処理します。

私の意見では、ルートごとに個別のモデルを保持する必要があります。そうしないと、ページの同じスラグを持つ投稿になってしまう可能性があります...これを処理したと確信していても. 結局、2 つの異なるルートを使用しているのに、誰かがページを探しているときに、なぜ常に投稿をクエリする必要があるのでしょうか?

于 2016-07-27T13:49:40.137 に答える