1

私はホイールを初めて使用します(そして、ここにたくさん投稿すると確信しています)ので、ご容赦ください。

「ユーザー」のコントローラーの下に「登録」と「ログイン」の2つのフォームがあります。私のURLは次のようになります。

/ユーザー/登録/ /ユーザー/ログイン/

現時点では、models フォルダーには、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() メソッドに入れる必要があります。ホイールにはそれが必要です。ただし、ログインページ/呼び出しにモデル検証を使用したい、または使用する必要があるかどうかはわかりません。

私が何かを見逃していない限り、ユーザーがサイトにログインするときに実際にモデルを変更 (つまり、新しいユーザーの作成または既存のユーザーの更新) しているわけではありません。DB値に対してそれらを認証するだけです(ユーザー名とパスワードの組み合わせをチェックします)。

私だったら、ログイン (フィールドの入力など) にはクライアント側の検証を使用し、登録にはモデルの検証を使用します。

チッ!クレイグ

于 2012-04-17T14:49:07.423 に答える
0

この URL に移動し、下にスクロールしてください: 「when」、「condition」、または「unless」を使用して検証範囲を制限する http://cfwheels.org/docs/1-1/chapter/object-validation

あなたの場合、おそらく when="onCreate" で行くことができます

于 2014-03-17T21:05:30.667 に答える