In your views, layouts and handlers you can use the buildLink
method provided by the request context object (event) to build routable links in your application.
/**
* Builds links to events or URL Routes
*
* @to The event or route path you want to create the link to
* @queryString The query string to append which can be a regular query string string, or a struct of name-value pairs
* @translate Translate between . to / depending on the SES mode on to and queryString arguments. Defaults to true.
* @ssl Turn SSl on/off on URL creation, by default is SSL is enabled, we will use it.
* @baseURL If not using SES, you can use this argument to create your own base url apart from the default of index.cfm. Example: https://mysample.com/index.cfm
*/
string function buildLink(
to,
queryString = "",
boolean translate = true,
boolean ssl,
baseURL = ""
){
Just pass in the routed URL or event and it will create the appropriate routed URL for you:
<a href="#event.buildLink( 'home.about' )#">About</a>
<a href="#event.buildLink( 'user.edit.id.#user.getID()#' )#">Edit User</a>
The queryString
argument can be a simple query string or a struct that represents the query variables to append.
<a href="#event.buildLink( 'home.about', "page=2&format=simple" )#">About</a>
<a href="#event.buildLink( 'home.about', { page : 2, format: "simple" } )#">About</a>
Please note that the to
argument can be a simple route path, but it can also be a struct. This struct is for routing to named routes. Even though we recommend to use the route()
method instead.
event.buildLink( {
name : "routeName",
params : { ... }
} )
event.route( "routeName", { ... } )
The request context object (event) also has some handy methods to tell you the name or even the current route that was selected for execution:
getCurrentRouteName()
- Gives you the name of the current route, if anygetCurrentRoute()
- Gives you the currently executed routegetCurrentRoutedURL()
- Gives you the complete routed URL pattern that matched the routegetCurrentRoutedNamespace()
- Gives you the current routed namespace, if any