所以我一直在使用內聯(正確的術語?)ColdFusion代碼來運行我所有的頁面,並且已經到了一個點,我認爲我對基礎知識有一個正確的理解,並且想要採取下一步。經過大量的交叉引用,研究和反覆試驗後,我想出了以下4個頁面,其中的意圖是能夠在頁面(crud.cfm)中輸入用戶名和密碼,然後在提交後,將用戶重定向到顯示新輸入數據的頁面以及任何過去的條目。新手,非常基本的CRUD通過Application.cfc
我可以用簡單的在線代碼和Application.CFM完成所有這些工作,但我希望今後可以向更多的OOP /模塊化方法遷移,因爲目前我發現自己在整個代碼中重寫/複製粘貼代碼塊幾個不同的頁面。我從'crud.cfm'提交時得到的錯誤是:
「cfinvoke標記中的組件屬性具有無效值。」
我試過它沒有哈希,沒有大寫「A」無濟於事。這裏是我的非工作代碼:
的Application.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">
resultpage.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數據庫。 非常感謝大家的幫助,期待您的回覆!
我認爲主要問題是您已經將函數「insertrecord」插入到Application.cfc中。雖然這是允許的,但我認爲它最終會讓你感到困惑。我相信你會得到那個錯誤,因爲你在'cfinvoke'調用中引用了「#Application#」。 'Application'也恰好是ColdFusion中應用程序範圍的保留字。只需用你的函數創建一個新的.cfc文件,然後調用它。 – 2013-03-04 21:19:41
@ Miguel-F好了,那麼在dir(現在持有我的insertrecord函數)中使用'functions.cfc',CF服務器是否也會查找'Application.cfc'和/或它是否需要? – 2013-03-04 22:11:18
是的,ColdFusion會自動查找並執行(如果找到)Application.cfc。不僅如此,還有特定的事件可以在Application.cfc中定義,在特定的生命週期事件中觸發。它非常強大。 [請在此處閱讀更多內容](http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=AppEvents_01.html) – 2013-03-05 13:23:51