1

我是车轮新手(我相信我会在这里发很多帖子)所以请耐心等待。

我在“用户”的控制器下有两种形式“注册”和“登录”。所以我的网址看起来像。

/用户/注册/ /用户/登录/

目前在我的模型文件夹中,我只是在 init 方法中使用 user.cfc 验证“注册”页面 - 这很好用。

所以基本上......我的问题是......关于我的登录表单的验证;我是否必须始终将验证放入 init 方法或其他方法中?如果是这样,我该怎么做?当然,每种形式都有不同的字段......所以我需要知道一些关于检测当前正在播放的形式的逻辑。

希望这是有道理的。作为参考,我的 user.cfc 模型目前看起来像这样:

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

    <cffunction name="init">

        <cfset validate( property='userName', method='validateAlphaNumeric') />
        <cfset validatesPresenceOf( properties='userName') />
        <cfset validatesUniquenessOf( properties='userName') />

        <cfset validatesFormatOf( property='userEmail', type='email', message="Email address is not in a valid format.") />
        <cfset validatesPresenceOf( properties='userEmail') />
        <cfset validatesUniquenessOf( properties='userEmail') />

        <cfset validatesPresenceOf( properties='userPassword') />
        <cfset validatesConfirmationOf( property='userPassword') />

        <cfset validatesLengthOf( property="userToken", allowBlank=true) />

    </cffunction>

    <cffunction name="validateAlphaNumeric" access="private">
        <cfif REFind("[^A-Za-z0-9]", this.userName, 1)>
            <cfset addError( property="userName", message="User name can only contain letters and numbers." ) />
        </cfif>
    </cffunction>

</cfcomponent>

谢谢,迈克尔。

4

2 回答 2

1

迈克尔,

您确实需要将模型验证放在您的 init() 方法中;轮子需要这个。但是,我不确定您是否希望或需要对登录页面/调用使用模型验证。

除非我遗漏了什么,否则当用户登录站点时,您实际上并没有更改模型(即创建新用户或更新现有用户)。您只是根据您的数据库值对它们进行身份验证(检查他们的用户名/密码组合)。

如果是我,我会使用客户端验证进行登录(字段已完成等),并使用模型验证进行注册。

!克雷格

于 2012-04-17T14:49:07.423 回答
0

转到此 URL 并向下滚动到:使用“何时”、“条件”或“除非”来限制验证范围 http://cfwheels.org/docs/1-1/chapter/object-validation

对于您的情况,您可能会选择 when="onCreate"

于 2014-03-17T21:05:30.667 回答