Configuration Routing struct mapper
Create a route that matches a URL requiring an HTTP GET
method. We recommend only using this matcher to expose actions that display data. See post
, patch
, delete
, and put
for matchers that are appropriate for actions that change data in your database.
Name | Type | Required | Default | Description |
---|---|---|---|---|
name | string | No | Camel-case name of route to reference when build links and form actions (e.g., blogPost ). |
|
pattern | string | No | Overrides the URL pattern that will match the route. The default value is a dasherized version of name (e.g., a name of blogPost generates a pattern of blog-post ). |
|
to | string | No | Set controller##action combination to map the route to. You may use either this argument or a combination of controller and action . |
|
controller | string | No | Map the route to a given controller. This must be passed along with the action argument. |
|
action | string | No | Map the route to a given action within the controller . This must be passed along with the controller argument. |
|
package | string | No | Indicates a subfolder that the controller will be referenced from (but not added to the URL pattern). For example, if you set this to admin , the controller will be located at admin/YourController.cfc , but the URL path will not contain admin/ . |
|
on | string | No | If this route is within a nested resource, you can set this argument to member or collection . A member route contains a reference to the resource's key , while a collection route does not. |
|
redirect | string | No | Redirect via 302 to this URL when this route is matched. Has precedence over controller/action. Use either an absolute link like /about/ , or a full canonical link. |
<cfscript>
mapper()
// Route name: post
// Example URL: /posts/my-post-title
// Controller: Posts
// Action: show
.get(name="post", pattern="posts/[slug]", to="posts##show")
// Route name: posts
// Example URL: /posts
// Controller: Posts
// Action: index
.get(name="posts", controller="posts", action="index")
// Route name: authors
// Example URL: /the-scribes
// Controller: Authors
// Action: index
.get(name="authors", pattern="the-scribes", to="authors##index")
// Route name: commerceCart
// Example URL: /cart
// Controller: commerce.Carts
// Action: show
.get(name="cart", to="carts##show", package="commerce")
// Route name: extranetEditProfile
// Example URL: /profile/edit
// Controller: extranet.Profiles
// Action: edit
.get(
name="editProfile",
pattern="profile/edit",
to="profiles##edit",
package="extranet"
)
// Example scoping within a nested resource
.resources(name="users", nested=true)
// Route name: activatedUsers
// Example URL: /users/activated
// Controller: Users
// Action: activated
.get(name="activated", to="users##activated", on="collection")
// Route name: preferencesUsers
// Example URL: /users/391/preferences
// Controller: Preferences
// Action: index
.get(name="preferences", to="preferences##index", on="member")
.end()
.end();
</cfscript>