2012-04-12 64 views
1

我是CFWheels和框架的新手。CFWheels - 未插入記錄

我正在關注的車輪網站上的截屏: http://cfwheels.org/screencasts/

我下面的教程完全一樣是......唯一不同的是,他的表被命名爲「人」,礦被命名爲「用戶」。我做了相應的改變,但保持其他一切。

他的單數是「人」,我的是「用戶」。

這裏是我的「User.cfc」控制器插入代碼:

<cfcomponent extends="Controller" output="true"> 

    <cffunction name="register"> 

     <cfset user = model("user").new() /> 

    </cffunction> 

    <cffunction name="create"> 

     <cfset params.user['userUUID'] = createUUID() /> 
     <cfset params.user['userCreated'] = createODBCDateTime(now()) /> 
     <cfset params.user['userModified'] = createODBCDateTime(now()) /> 

     <cfset user = model("user").new(params.user) /> 
     <cfset user.save() /> 

    </cffunction> 

</cfcomponent> 

現在,我還使用形式傭工等,在我看來,像這樣:

<cfparam name="user" /> 

<cfoutput> 

#startFormTag(action="create")# 

<fieldset> 

    <legend>Register</legend> 

    #textField(label="User Name http://#cgi.server_name#/user/", objectName="user", property="userName")# 
    #textField(label="Email Address", objectName="user", property="userEmail")# 
    #textField(label="Password", objectName="user", property="userPassword")# 
    #submitTag(value="Register")# 

</fieldset> 

#endFormTag()# 

</cfoutput> 

很簡單對?所以我不明白爲什麼它沒有插入。它與命名我的CFC「用戶」有什麼關係,還有一個名爲「users」的表格,我的單一名稱設置爲「user」?

當我提交表單時,沒有錯誤。它執行得很好,但如果我查看數據庫,沒有什麼。

我認爲......的一件事是...車輪甚至知道什麼表要查找?這似乎沒有任何解釋。也許它只是找到了錯誤的表格?

非常感謝, 邁克爾


解決了!

大家好,只是可能會遇到此問題的任何人的更新。沒有任何事情發生的原因是因爲我的數據庫表需要某些字段不爲空。 CFWheels沒有拋出任何錯誤。一旦我將價值傳遞給這些領域,那就很好了;所以一定要檢查一下!

希望有所幫助。

+0

應該是主鍵'userUuid'?這可能會導致更多問題。 – 2012-04-12 18:44:40

+0

您可以使用「用戶」表的詳細定義更新您的問題嗎? – 2012-04-12 19:40:21

+0

UUID不是主鍵字段。我把它作爲未來使用的東西。主鍵是一個自動增量字段。表格很好,因爲我可以插入普通的CFQUERY就好了。 – 2012-04-13 09:26:45

回答

2

邁克爾,首先我可能會建議您將您的控制器重命名爲Users.cfc(複數)。模型是單數(User.cfc),而控制器和表是複數(Users.cfc)。在Wheels(和Rails和其他類似的約定優於配置框架)中,模型是單數(User.cfc),而控制器和表是複數(Users.cfc)。你的代碼看起來很穩定,唯一跳出來的是你的控制器被記錄爲「User.cfc」。

有一件事我可以在我的創建/更新控制方法做的是這樣的:

if (user.save()){ 
    flashInsert(success="The user was created successfully."); 
    redirectTo(action="index"); 
} else { 
    flashInsert(error="There was an error creating the user."); 
    renderPage(action="new"); 
} 

user.save()將返回boolean值,這個條件允許你做一些實際的錯誤處理/調查是否有問題出現,保存失敗。

就Wheels如何知道要查找哪個表格這個問題而言,Wheels按照慣例來做這件事。 [釋義它是如何工作的]它檢查你的模型,並且對於每個模型,它將檢查數據庫中是否存在複數版本。所以,如果有一個名爲「用戶」的模型,那麼Wheels會預計會有一個名爲「Users」的表。

+0

這種方法是現貨。車輪在驗證失敗時不會「拋出」錯誤,而是在對象實例中記錄錯誤。這取決於您使用這種方法向用戶報告錯誤。 – 2012-07-17 18:51:07

1

邁克爾,

我在故障診斷模型對象函數第一步通常是轉儲結果allErrors()方法。嘗試保存後嘗試添加此行。

<cfdump var=user.allErrors() label="User Save Errors" abort /> 

MC

+0

嗨,我只是嘗試了這一點,它沒有顯示任何錯誤。奇怪!如果這有什麼不同,我正在使用Railo。 – 2012-04-13 09:34:59