かなりの数の場所を調べましたが役に立たなかったので、専門家に尋ねる時が来たと思いました。
私は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/ です。