Blog

Brad Wood

September 19, 2012

Spread the word


Share your thoughts

 

In ColdBox, controllers or event handlers as we call them are defined as CFCs.  Part of the power of this is that you can share and extend code in your applications by simply extending one handler with another.  
 
Imagine a reporting framework where a number of reports will all have a criteria page, validation, execution, and export data action with most of the logic, views, layouts, and models the same between every report while still allowing for customizations on a per-report basis.
 
You could set up a base report handler that contained shared stuff like so:
 
component name="BaseReport" extends="coldbox.system.eventhandler" output="false"
{
  property name="ReportService" inject;
  
  public function init(Controller){
    super.init(arguments.controller);
    return this;
  }
  
  function criteria(Event, rc, prc){
    // Common Code
  }
  
  function execute(Event, rc, prc){
    // Common Code
  }
  
  function showResults(Event, rc, prc){
    // Common Code
  }
  
}
 
And then extend it per report with concrete handlers that add their own customizations:
 
 

component name="MyReport" extends="BaseReport" output="false"

{

  property name="myReportDAO" inject;

 

  function criteria(Event, rc, prc){

    super.criteria(Event, rc, prc);

    // Add in custom goodness for this report.

  }

}

 
More info on how amazing handlers are here: http://wiki.coldbox.org/wiki/EventHandlers.cfm
 
P.S. Remember, since ColdBox is chock full of choices, your event handlers don't have to eventually extend coldbox.system.eventhandler.  We could leave off the extends and the super.init() call on our BaseReport and WireBox will use virtual inheritance to ensure the handler has everything it needs.
 

 

Add Your Comment

Recent Entries

Hackers demand a ransom to restore data from my ColdFusion web applications!

Hackers demand a ransom to restore data from my ColdFusion web applications!

Hackers demand a ransom to restore data from my ColdFusion web applications!

Unfortunately, we often hear this message from clients who thought it would never happen to them... until it did. Some believed they could delay the expense of Implementing ColdFusion security best practices for one year, while others were tempted to put it off for just a few months. However, in today's rapidly evolving digital landscape, the security of web applications, including ColdFusio...

Cristobal Escobar
Cristobal Escobar
April 16, 2024
Ortus March Newsletter

Ortus March Newsletter

Welcome to Ortus Solutions’ monthly roundup, where we're thrilled to showcase cutting-edge advancements, product updates, and exciting events! Join us as we delve into the latest innovations shaping the future of technology.

Maria Jose Herrera
Maria Jose Herrera
April 01, 2024
Into the Box 2024 Last Early Bird Days!

Into the Box 2024 Last Early Bird Days!

Time is ticking, with less than 60 days remaining until the excitement of Into the Box 2024 unfolds! Don't let this golden opportunity slip away; our exclusive Early Bird Pricing is here for a limited time only, available until March 31st. Why wait? Secure your seat now and take advantage of this steal!

Maria Jose Herrera
Maria Jose Herrera
March 20, 2024