A handy and powerful CFWheels feature for keeping your code DRY is to be able to configure application-wide default for wheels functions.
It’s also possible to tap into the CFWheels framework to make this feature available to functions added by your own plugins. Here’s how.. (props to Andy Bellenie)
Let’s assume you have created a plugin called putOnWeight
and in this plugin, you have a function called eatCake()
As per the CFWheels documentation you set your application-wide function defaults in your settings.cfm
like so:
<!--- config/settings.cfm ---> <cfset set(functionName="eatCake", howMany=20)>
To have your plugin accept these function defaults, you will need to tap into the CFWheels $args()
function.. like so:
<!--- plugins/PutOnWeight.cfc ---> <cfcomponent output="false" mixin="controller"> <cffunction name="init"> <cfset this.version = "1.1.7"> <cfreturn this> </cffunction> <cffunction name="eatCake"> <!--- note that howMany argument is not required, and has no default ---> <cfargument name="howMany" type="numeric" required="false"> <!--- use the CFWheels $args function to look for default arguments set in settings.cfm ---> <cfset $args(name="eatCake", args=arguments)> <!--- cake.. nom nom nom! ---> <cfset var loc = {}> <cfset loc.cakesEaten = arguments.howMany> <cfreturn loc.cakesEaten> </cffunction> </cfcomponent>
Disclaimer: the $args()
function is a private cfwheels framework function so use at your own peril… I am.