【问题标题】:Laravel URL handling from database来自数据库的 Laravel URL 处理
【发布时间】:2015-08-13 06:36:42
【问题描述】:

在 Laravel 中,如果路由是动态生成的,我将如何处理它?我试图做的是让用户能够在网站上创建页面,所以说他们想要创建 /about 但没有在路由文件中列出,因为他们将通过管理面板添加它。我试图弄清楚我将如何制作它,以便我可以获得完整的 URL,查看它是否是路由文件中已经存在的页面,如果不存在则检查数据库以查看该名称是否存在页面以及是否显示该页面的内容。

【问题讨论】:

    标签: php laravel-5 laravel-routing


    【解决方案1】:

    要实现动态路由,您可以执行以下操作:

    Route::get('/{pageName}', function($pageName) {
        // Do your logic here to determine if the page is in the database, or a file.
    });
    

    查看Routing Parameters 上的 Laravel 文档,看看你还能用它们做什么。在我看来,Laravel 路由系统非常干净而且非常强大。

    更新

    进行多条路线的一种方法是这样的:

    Route::get('/{pageName}/{subPage}', function($pageName, $subPage) {
        // Do your logic here to determine if the page is in the database, or a file.
    });
    

    您还可以通过使用正则表达式来了解更高级的 URL 结构。这一切都记录在上面提供的链接中。

    【讨论】:

    • 我会更进一步,做:Route::get('/{username}/{pageName}', function($username, $pageName) { 或其他防止冲突的方法。抱歉,我误读了这篇文章,因为他希望用户群中的不同用户能够访问创建路线.
    • @Blake 你绝对可以,但这取决于 OP 以及他们如何设置系统。给出的答案显示了他们如何以最简单的方式将 Laravel 路由用于动态页面。
    • 谢谢大家。这给了我需要的起点。在我使用您的答案解决此问题时出现的另一个快速问题,如果有多个部分,例如:domain.com/first/second。我怎么能把所有这些都拉出来?
    • @Scott 看看我在答案中发布的路由参数链接。您可以向路由添加额外的、可选的或必需的变量。我还更新了我的答案以包含 /first/second 请求的示例。
    • 感谢@RhapX 感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多