Thank You Page
For most of your forms, you will want some sort of confirmation page letting the user know that the form was completed successfully.
# Using a query string to display a custom thank you message
Within your form, add a hidden field with the name redirect
. This line of code will redirect your form on a successful submission to any template you wish:
<input type="hidden" name="redirect" value="contact?message=thankyou">
You can redirect a user to the same template as that you form or a completely different template. You can also pass that template a query string which you can use to conditionally display content in your thank you page template. In the example above, we are passing the query string ?message=thankyou
and we can use that query string in a conditional statement like so:
{% if craft.request.getParam('message') == 'thankyou' %} ... {% endif %}
The query string method is the easiest way to setup a thank you page.
# Using a url segment to display a custom thank you message
If you don't want to use a query string for some reason, you can also add a segment to your redirect URL and setup a route.
To use this method you will need to create a redirect value that just uses URL segments:
<input type="hidden" name="redirect" value="contact/thankyou">
By default, when your form redirects, that page won't load properly because Craft doesn't know where to route that URL to yet.
You can setup a route in the Control Panel Settings->Routes->Create New Route
or in the craft/config/routes
template.
For our example, if we setup our route in the control panel we would use the following settings to tell Craft to display the contact
template when a user is redirected to contact/thankyou
.
URI
contact/thankyou
Template
contact
Once we've routed the user to the correct template, we can display our thank you message using a conditional statement that tests for our thankyou
slug in the second segment of the URL:
{% if craft.request.getSegment(2) == 'thankyou' %} ... {% endif %}