0

うん...(私...また!)

いくつかのエラーをトラブルシューティングしようとしていますが、コントローラーで allErrors() をダンプしようとすると、実際にはそうであってはならないことがわかっているのに、単に空の配列になります。

link.cfc (モデル)

<cffunction name="init">

<cfset validate(property='linkURL', method="validateUniqueUrl", when="onCreate") />

</cffunction>

<cffunction name="validateUniqueUrl" access="public">
        <cfif this.exists(where="linkURL='#this.linkURL#'")>
            <cfset this.addError(property="linkURL", name="linkExists", message="The link you entered already exists.") />
        </cfif>
    </cffunction>

リンクが存在する場合、ビューでエラーが正しく表示されます。

<cfoutput>#errorMessagesFor("link")#</cfoutput>

ただし、私のコントローラーでは、次のようにして、モデルのすべてのエラーをダンプしたいと考えています。

<cfdump var="#link.allErrors()#" abort />

ただの空の配列!なんてこと?!

私が試しても:

<cfdump var="#link.errorsOn("link")#" abort />

...繰り返しますが、EMPTY 配列です。

ここで何が起こっているのですか?私は馬鹿か何かですか?

ありがとう。マイケル。

アップデート:

わかりましたので<cfdump var="#link.allErrors()#" abort />、私のビューで使用しているようですが、コントローラーでは使用できませんか? なぜだめですか?リダイレクトを作成できるように、コントローラーでこれが必要です!

4

1 に答える 1

2

わかりました、私はそれを自分で理解しました。これは、質問を投稿してから数分後に常に発生するのが典型的です。ラテラルシンキング??

errorsOn()メソッドの後にメソッドを呼び出す必要がありましたlink.save()

これを link.save() メソッドの前に変数に宣言していたので、CFWheels はその時点でエラーが発生したことを認識していなかったと思います...エラーが発生する前に保存を試みる必要がないからです。

バム!論理。

于 2012-08-04T18:25:23.297 に答える