【问题标题】:CMS like wildcard routing with Slim 3CMS 类似于 Slim 3 的通配符路由
【发布时间】:2019-04-25 19:10:31
【问题描述】:

我正在 Slim 3 上为我正在处理的一些项目开发一个(非常轻量级的)CMS。我正在为路由而苦苦挣扎。也许这里有人可以将我推向正确的方向。

管理员可以在后端添加新的前端页面。如果添加页面,则会(自动)创建一个 slug。有几个页面(如索引页面)无法删除或编辑(更改 slug)

现在我不知道如何设置路由。

我想要的示例:

www.example.com/
www.example.com/contact.html www.example.com/some-page.html

我能够设置通配符路由,但为了让事情更有趣,我也有一些用于后端的路由:

www.example.com/backend/
www.example.com/backend/dashboard/
$app->get('/[{path:.*}]', function($request, $response, $path = null) { return $response->write($path ? 'subroute' : 'index'); });

$app->group('', function () {
    $this->get('/backend/dashboard.html', 'BackendDashboardController:index')->setName('backend');
});

一旦我也实现了这些,我就会收到以下错误:

Static route "/backend/dashboard.html" is shadowed by previously defined variable route "/(.*)" for method "GET"

每一个提示将不胜感激。

【问题讨论】:

    标签: routing content-management-system slim slim-3


    【解决方案1】:

    如果您为“/backend”路径创建组,它应该可以工作。

    $app->group('/backend', function () {
        $this->get('/dashboard.html', 'BackendDashboardController:index')->setName('backend');
    });
    
    $app->get('/[{path:.*}]', function($request, $response, $path = null) { return $response->write($path ? 'subroute' : 'index'); });
    

    【讨论】:

    • 不幸的是,这不起作用。我得到了同样的结果。
    • 然后尝试改变路线的顺序。我更新了我的示例。
    • Duuude ……这完全奏效了。我不知道顺序很重要。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-28
    • 2012-02-10
    • 1970-01-01
    相关资源
    最近更新 更多