Linking Events Together
ColdBox provides you with a nice method for generating links between events by leveraging an object called event
that is accessible in all of your layouts/views and event handlers. This event
object is called behind the scenes the request context object, which models the incoming request and even contains all of your incoming FORM
and URL
variables in a structure called rc
.
Tip: You will use the event object to set views, set layouts, set HTTP headers, read HTTP headers, convert data to other types (json,xml,pdf), and much more.
Building Links
You can easily build links with ColdBox by using two methods:
event.buildLink()
- Build links to events or URL routesevent.route()
- Build links to specifically named routes
Here are the signatures
Edit Your View
Edit the views/virtual/hello.cfm
page and wrap the content in a cfoutput
and create a link to the main ColdBox event, which by convention, is main.index
. You can use main.index
or just main
(Remember that index
is the default action)
This code will generate a link to the main.index
event in a search engine-safe manner and in SSL detection mode. Go execute the event: http://localhost:{port}/virtual/hello
and click on the generated URL; you will now be navigating to the default event /main/index
. This technique will also apply to FORM submissions:
Tip You can visit our API Docs for further information about the event
object and the buildLink
method: http://apidocs.ortussolutions.com/coldbox/current/index.html?coldbox/system/web/context/RequestContext.html.
For extra credit try to use more of the buildLink
arguments.
Routing
We have been using routing by convention, but let's do named routes now to control the URL. Let's create a /home
route that will execute the main.index
event and update our view to change the building of the URL via route()
. Let's open the config/Router.cfc
We use the route()
method to register URL patterns and then tell the router what to execute if matched. This can be an event, but it can also be a view, an inline action, a relocation, and much more. Since we registered new URLs you need to reinit the app (?fwreinit=1
). Now let's update the link in the hello
view:
Try it out now!
Tip: Check out the routing API Docs for further information.
Last updated