0

かなりの数の場所を調べましたが役に立たなかったので、専門家に尋ねる時が来たと思いました。

私はlaravelで遊んでいますが、ルーティングに問題があります。

私はある種の cms と製品カタログも持っていますが、それぞれのページには接頭辞がありません。

製品は「example.com/my-product」、ページは「example.com/my-page」の場合があります

私のルートでは、URLがページまたは製品に一致するかどうかを確認し、どちらであるかに応じて特定のコントローラー/アクションにリダイレクトしたいと考えています。

現在私は持っています

Route::any('/{slug}', function($slug) {
    $page = App\Models\Page::firstByAttributes(['slug' => $slug]);
    if($page) {
     // go to pagesController@find
    }
})->where('slug', '.*');

ページと製品を区別するには問題ありません。製品チェックの if($page) の後に elseif をポップするだけですが、URL が指していることが判明したら、PagesController にアクセスする方法に困惑しています。データベース上のページ。

どんな助けでも大歓迎です。

編集:

マイページコントローラー:

class PagesController extends BaseController {

    public function find()
    {
        echo 'asdaasda'; die;
    }
}

私はこれをファッションの後に機能させることができますが、それは私が望むものではありません. URL をそのままにし、PagesController でページの処理とレンダリングを処理する必要があります。私がそれを機能させる唯一の方法は、Route::controller('pages', 'PagesController') をルートファイルに追加し、検索関数を getFind に変更することですが、それは例のような URL になります。 example.com/about-us のような元の URL ではなく、com/pages/find/ です。

4

2 に答える 2