所以我一直在使用内联(正确的术语?)ColdFusion 代码来运行我的所有页面,并且已经达到了我认为我对基础知识有相当了解的地步,并且想要采取下一步行动。经过大量的交叉引用、研究和反复试验,我想出了以下 4 个页面,其目的是能够在表单页面 (crud.cfm) 中输入用户名和密码,然后,提交后,将用户重定向到一个页面,该页面显示新输入的数据以及任何过去的条目。
我可以使用简单的内联代码和 Application.CFM 来完成所有这些工作,但我希望在未来转向更多的 OOP/模块化方法,因为目前我发现自己在几个不同的页面上重写/复制粘贴大量代码。我从“crud.cfm”提交时得到的错误是:
“cfinvoke 标记中的组件属性值无效。”
我已经尝试过没有哈希并且没有大写“A”无济于事。这是我的非工作代码:
应用程序.cfc
<cfcomponent output="false">
<cffunction name="insertrecord" access="public" output="false">
<cfargument name="data" type="struct" required="true">
<cfquery name="create" datasource="test">
INSERT INTO logins(
username,
password)
VALUES(
'trim(form.username)',
'trim(form.password)')
</cfquery>
</cffunction>
</cfcomponent>
crud.cfm
<h3> Enter new user/password </h3>
<cfform name="thisform" method="post" action="procpage.cfm">
Username:<cfinput type="text" name="username" value="">
Password:<cfinput type="password" name="password" value="">
<input type="submit" value="submit">
</cfform>
procpage.cfm
<cfif !StructIsEmpty(form)>
<cfinvoke component="#Application#" method="insertrecord">
<cfinvokeargument name="data" value="#form#">
</cfinvoke>
</cfif>
<cflocation url="resultpage.cfm" addtoken="no">
结果页面.cfm
<cfquery name="read" datasource="test">
SELECT * FROM logins
</cfquery>
<table>
<tr>
<th>LOGIN</th>
<th>USERNAME</th>
<th>PASSWORD</th>
</tr>
<cfloop query="read">
<tr>
<td>#read.login#</td>
<td>#read.username#</td>
<td>#read.password#</td>
</tr>
</cfloop>
</table>
ColdFusion 版本 8,MSSQL 2005 数据库。提前感谢大家的帮助,期待您的回复!