一般来说,我对CFWheels和框架都很陌生。
我正在跟踪轮子网站上的屏幕:http://cfwheels.org/screencasts/
我按照is...the唯一的区别来看教程,他的表名为"people",我的表名为"users“。我做了相应的改变,但其他一切都保持不变。
他的单数是“人”,我的单数是“使用者”。
下面是我的"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 "user“有关吗?还有一个名为"user”的表,其单名设置为“user”吗?
当我提交表格时,没有错误。它执行得很好,但是如果我查看DB,就什么都没有了。
有一件事,我thought...is...exactly怎么知道轮子甚至知道要找哪张桌子?对此似乎没有任何解释。也许它只是定位错了桌子?
非常感谢,迈克尔
解决了!
大家好,这是其他人可能遇到的最新情况。之所以没有发生任何事情,是因为我的数据库表要求某些字段不为null。CFWheels没有抛出任何错误。一旦我将值传递给这些字段,就可以了;所以,一定要检查出这个值!
希望这能有所帮助。
发布于 2012-04-12 17:37:07
迈克尔,首先我建议您将控制器重命名为Users.cfc (复数)。
在轮子(以及Rails和其他类似的配置框架上的约定)中,模型是单数的(User.cfc),而控制器和表是复数的(Users.cfc)。您的代码看起来都很可靠,唯一让我吃惊的是,您的控制器被认为是"User.cfc“。
在create/update控制器方法中,我可能做的一件事是这样的:
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()将返回一个布尔值,如果发生错误而保存失败,则该条件允许您执行一些实际的错误处理/调查。
关于轮子如何知道要找哪张桌子的问题,车轮是按照惯例来做的。在这里解释一下它是如何工作的,它检查您的模型,对于每个模型,它将检查您的DB中是否存在一个多元版本。因此,如果有一个名为"User“的模型,那么轮子就会期望有一个名为”User“的表。
发布于 2012-04-12 20:09:28
迈克尔,
故障排除模型对象函数的第一步通常是转储结果allErrors()方法。尝试在尝试保存之后添加这一行。
<cfdump var=user.allErrors() label="User Save Errors" abort />MC
https://stackoverflow.com/questions/10128448
复制相似问题