我是CFWheels和框架的新手。
我正在关注Wheels网站上的截屏视频: 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 :(得分:2)
在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()将返回一个布尔值,如果出现问题并且保存失败,则此条件允许您执行一些实际的错误处理/调查。
关于Wheels如何知道要查找哪个表的问题,Wheels按惯例执行此操作。 [解释它是如何工作的]它检查你的模型,并且对于每个模型,它将检查你的数据库中是否存在复数版本。因此,如果有一个名为“User”的模型,那么Wheels将期望有一个名为“Users”的表。
答案 1 :(得分:1)
迈克尔,
我对模型对象函数进行故障排除的第一步通常是转储结果allErrors()方法。尝试保存后立即尝试添加此行。
<cfdump var=user.allErrors() label="User Save Errors" abort />
MC