【问题标题】:Laravel Routing QueryLaravel 路由查询
【发布时间】:2019-12-08 20:57:35
【问题描述】:

我在我的网站管理员中制作了一些定制页面,并将它们作为 URL 的第一段。

例如

/property-hartlepool

我想在我的路由文件中添加一个陷阱所有路由:

Route::get('{any?}', 'PagesController@view');

我遇到的问题是它完全覆盖了我的其他路线,我猜这是一个陷阱所有路线的名称。但是,如果找不到匹配项,我希望它跳过。

我有一条管理员路线

/管理员

但现在它会抛出 404 错误...

我的 PagesController@view 方法是:

public function view(Request $request)
{
    $route = $request->segment(1); // $request->path();

    // get page content
    $page = Page::where('route', $route)->firstOrFail();

    // If not full width, get four latest properties
    //$properties = Property::latest_properties_for_frontend();

    //metadata
    $meta = get_metadata($page);

    //page is Temporary
    return view('frontend.'.themeOptions().'.page', [
        'route' => $route,
        'meta' => $meta,
        'page' => $page
    ]);
}

他们这样做是不是更好的方法,我确实有其他路线也位于“顶级”级别。比如……

Route::get('/property/{property}/{propertyId}', 'PropertiesController@property');

【问题讨论】:

    标签: laravel


    【解决方案1】:

    将您的陷阱路线声明为最后一条路线。

    Route::get('/admin', 'AdminController@view');
    ...
    ...
    Route::get('{any?}', 'PagesController@view');
    

    【讨论】:

    • 我同意这一点。您还可以将->where(['any' => '.*']) 添加到路由中。这样:Route::get('{any?}', 'PagesController@view')->where(['any' => '.*']);
    猜你喜欢
    • 2014-08-23
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    相关资源
    最近更新 更多