如何使用 GET Page 在 laravel 中创建路由?

How to make route in laravel using GET Page?

在使用 laravel 之前,我通常使用如下代码路由我的页面:

//index.php
$get_page=$_GET['page'];
if (empty($get_page) or $get_page=='dashboard')
{
   include ('content/dashboard.php');   
}elseif ($get_page=='schedule')
{
  include ('content/schedule.php');
}

else{
    include ('404/404.php');
}

我是否可以像那样路由我的页面,但在 Laravel 中? 我更喜欢使用格式:www.example.com/?page=schedule rather than www.example.com/schedule

laravel只是PHP的农活。所以很相似

将这段代码写在你的 blade 上。

@php  $get_page=$_GET['page']; @endphp

@if (empty($get_page) or $get_page=='dashboard')
     @include('content.dashboard.php');
@elseif ($get_page=='schedule')
     @include ('content.schedule.php');
@elseif
    @include ('404.404.php');
@endif
Route::get('/', function (Request $request) {
    if($request->query('page')) {
        $page = $request->query('page');
        return view($page);
    }
});

Documentation: https://laravel.com/docs/8.x/routing

你可以在你的控制器中试试这个

public function index(Request $request): JsonResponse
    {
        $routeName = $request->get('page');
        try {
            if (isset($routeName))
            {
                return redirect(route($routeName));
            }
            return abort(404);
        } catch (Exception $exception) {
            return abort(404);
        }

    }

并使用像这样的命名路由

Route::get('dashboard', [DashboardController::class, 'dashboard'])->name('dashboard');

所以现在我在 laravel 上的路线是这样的:

<?php

use Illuminate\Support\Facades\Route;
use Illuminate\Http\Request; //have to use this

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

/* Route::get('/', function () {
    return view('index');
});
 */

Route::get('/', function (Request $request) {
    if($request->query('page')) {
        $page = $request->query('page');
        return view($page);
    }else{
        return view('index');
    }
});

效果很好!