Created
December 8, 2009 22:04
-
-
Save jonkarna/252035 to your computer and use it in GitHub Desktop.
Making a contact form restful with Mach-II / Coldfusion
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<mach-ii version="1.5"> | |
<event-filters> | |
<event-filter name="RESTfulFilter" type="model.RESTfulFilter" /> | |
</event-filters> | |
<event-handlers> | |
<event-handler event="contact"> | |
<filter name="RESTfulFilter"> | |
<parameter name="get" value="contact.form" /> | |
<parameter name="post" value="contact.action" /> | |
</filter> | |
</event-handler> | |
<event-handler event="contact.form" access="private"> | |
<event-arg name="contentPieceMappingName" value="contact" /> | |
<notify listener="ContentListener" method="getContentPiece" /> | |
<event-arg name="theme" value="white" /> | |
<notify listener="ReCaptchaListener" method="getReCaptcha" resultArg="reCaptcha" /> | |
<view-page name="contact" contentArg="content" /> | |
<execute subroutine="layout.default" /> | |
</event-handler> | |
<event-handler event="contact.action" access="private"> | |
<notify listener="ReCaptchaListener" method="eventArgValidation" resultArg="reCaptchaValid" /> | |
<event-bean name="Contact" type="model.Contact" /> | |
<filter name="FormValidator"> | |
<parameter name="formObjectName" value="Contact" /> | |
<parameter name="invalidEvent" value="contact.form" /> | |
</filter> | |
<notify listener="ContactListener" method="addContact" /> | |
<event-arg name="contactsent" value="1" /> | |
<redirect event="contact" args="contactsent" /> | |
</event-handler> | |
</event-handlers> | |
</mach-ii> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<cfcomponent display="RESTfulFilter" extends="MachII.framework.EventFilter"> | |
<cffunction name="filterEvent" returnType="boolean"> | |
<cfargument name="event" type="MachII.framework.Event" required="true" /> | |
<cfargument name="eventContext" type="MachII.framework.EventContext" required="true" /> | |
<cfargument name="paramArgs" type="struct" required="false" default="#StructNew()#" /> | |
<cfset var requestMethod = cgi.REQUEST_METHOD /> | |
<cfset var _method = arguments.event.getArg("_method", requestMethod) /> | |
<cfset var restMethod = "" /> | |
<cfif LCase(requestMethod) eq "get"> | |
<cfset restMethod = "get" /> | |
<cfelseif LCase(_method) eq "put"> | |
<cfset restMethod = "put" /> | |
<cfelseif LCase(_method) eq "delete"> | |
<cfset restMethod = "delete" /> | |
<cfelse> | |
<cfset restMethod = "post" /> | |
</cfif> | |
<cfif StructKeyExists(paramArgs, restMethod)> | |
<cfset announceEvent(paramArgs[restMethod], arguments.event.getArgs()) /> | |
<cfelse> | |
<cfthrow message="No event specified for REST method '#restMethod#'" /> | |
</cfif> | |
<cfreturn false /> | |
</cffunction> | |
</cfcomponent> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment