gpt4 book ai didi

coldfusion - cfwheels 中的动态路线创建?

转载 作者:行者123 更新时间:2023-12-04 00:41:31 26 4
gpt4 key购买 nike

根据我对 chwheels 的一些了解,我知道路线存储在应用程序范围内,即准确地说在 application.wheels.routes 中。它还在 application.wheels.namedroutepositions 中维护路线位置。

现在我在 application.wheels.routes 中添加了路由,即 Controller 、 Action 、模式、名称,并且还添加到 namedRoutePositions 结构中。如下:

<cfset myRoute.controller = 'pages' >
<cfset myRoute.action = 'about' >
<cfset myRoute.pattern = 'about_my_project' >
<cfset myRoute.name = 'about' >

<cfset structAppend(application.wheels.routes[3],myRoute) />
<cfset structInsert(application.wheels.namedroutepositions,'about','3',true)/>

上面的代码被添加到我在应用程序启动时调用的 settings.cfc 中。如果我在添加上述代码后将 application.wheels.routes 和 application.wheels.namedroutepositions 转储到 settings.cfc 中,它会反射(reflect)在这些各自的结构中但是当我尝试访问我刚刚添加的新路线时,它不会工作。此外,当我将 application.wheels.routes 和 application.wheels.namedroutepositions 转储到另一个 cfc 中时,它没有显示新添加的路线,即新添加的路线没有持续存在。如何使新添加的路由在整个应用程序中持久存在?我不确定出了什么问题。我需要更新路线信息的其他变量/结构吗?我还需要做些什么才能完成这项工作吗?

注意:我暂时手动添加了这条路线。当这个实验成功时,我将编写这段代码来动态添加路由。

提前感谢所有帮助。

最佳答案

designdevelopment 模式下,我相信路由会在每次请求时重新生成,这就是为什么你会丢失 中的值应用范围。

也就是说,application 作用域不是持久化路由的好地方,因为当您的应用程序重新加载时,application 作用域会被刷新。 (虽然你可能已经知道了。)

创建完全动态路由的一种方法是这样的(尽管我承认它有点难看):

<cfset addRoute(name="page", pattern="[folder1]/[folder2]/[folder3]/[folder4]/[folder5]", controller="pages", action="show")>
<cfset addRoute(name="page", pattern="[folder1]/[folder2]/[folder3]/[folder4]", controller="pages", action="show")>
<cfset addRoute(name="page", pattern="[folder1]/[folder2]/[folder3]", controller="pages", action="show")>
<cfset addRoute(name="page", pattern="[folder1]/[folder2]", controller="pages", action="show")>
<cfset addRoute(name="page", pattern="[folder1]", controller="pages", action="show")>
<cfset addRoute(name="root", pattern="", controller="someController", action="someAction")>

然后如果路由需要通过数据库动态控制,你可以在 controllers/Pages.show() 中使用 params.folder1 通过 进行适当的查询>params.folder5.

请注意,这些动态路由应该在您需要指定的任何其他路由之后,但在空的 root 路由之前。

您还想看看 Tom 在他的回答中提到的 ColdRoute 插件是否对通配符路由有任何作用。

像这样的东西是最合适的,因为路由应该在 config/routes.cfm 中硬编码。不要打这个。

关于coldfusion - cfwheels 中的动态路线创建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21087399/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com