将基于帧的ColdFusion页面转换为通用框架

时间:2013-03-06 05:12:04

标签: coldfusion coldfusion-8

我正在开发一个大型的传统ColdFusion网站,该网站广泛使用框架进行布局。该网站的很大一部分专门用于流程控制工作流程 -

  • 用户1创建作业
  • 用户2完成工作的第2部分
  • 用户1完成工作的第3部分
  • 用户3签署该作业

...等

每种类型的作业的每个部分或阶段当前都有自己的.cfm页面及相关输入,每个页面都有自己的副本(应该是什么,但不是)进行/回归的公共代码阶段之间。每个页面都显示在主框架中,其他框架有一个阶段列表,工作摘要等。

我的任务是清理这个不圣洁的混乱,并制作一个通用的通用流程控制处理程序来处理所有工作类型。我在数据库中有每个阶段文件的名称,所以我可以做一个查询,给出作业的类型和ID,数据库返回我需要显示的URL。

但是加载该页面的最佳方法是什么?我玩<cfdiv bind="[page]">,它加载了页面,但似乎没有加载任何javascript,<cfinclude template="[page]">,这是...有问题的,因为现有的代码使用URL参数广泛而且我无法通过<cfinclude>直接提供这些信息。

我是否应该使用cfc函数从请求中删除URL参数,将它们插入到URL范围中,然后<cfinclude>页面?我对所有想法持开放态度,但我试图避免对舞台页面进行大量改写 - 其中有很多,其中一些并不是很好写...

编辑:工作示例?

我刚刚探讨了将它放在自定义标记中,所以在我的处理程序页面中我有:

<cf_processPage typeid="#typeid#" objid="#objid#">

并在processPage.cfm中:

<cfinvoke component="cfc.pcs" method="getCurrProcess" returnvariable="strUrl">
    <cfinvokeargument name="CategoryID" value="#catid#">
    <cfinvokeargument name="EntityID" value="#objid#">
</cfinvoke>

<cfif strUrl.indexOf('?') gt 0>
    <cfset strPage = ListGetAt(strUrl,1,'?')>
    <cfset strArgs = ListGetAt(strUrl,2,'?')>

    <cfloop list="#strArgs#" delimiters="&" index="arg">
        <cfset URL[#ListGetAt(arg,1,'=')#] = #ListGetAt(arg,2,'=')#>
    </cfloop>
<cfelse>
    <cfset strPage = strUrl>
</cfif>

<cfinclude template="#strPage#">`

它看起来效果很好,但这就是......有效吗?优雅?有没有更好的方法(?)?

0 个答案:

没有答案