Gathering form input to display on another page
After a user submits a form, we need to be able to take that information and pass it to another page. This recipe shows how we can use Laravel's built-in methods to handle our POST data.
Getting ready
We'll need the simple form set up from the Creating a simple form section.
How to do it...
Follow these steps to complete this recipe:
- Create a route to handle the POST data from the form:
Route::post('userform', function() { // Process the data here return Redirect::to('userresults')- >withInput(Input::only('username', 'color')); });
- Create a route to redirect to, and to display the data:
Route::get('userresults', function() { return 'Your username is: ' . Input::old('username') . '<br>Your favorite color is: ' . Input::old('color'); });
How it works...
In our simple form, we're POSTing the data back to the same URL, so we need to create a route that accepts POST
using the same path. This is where we would do any processing of the data, including saving to a database or validating the input.
In this case, we simply want to pass the data to the next page. There are a number of ways to accomplish this. For example, we could use the Input
class's flashOnly()
method:
Route::post('userform', function() { Input::flashOnly('username', 'color'); return Redirect::to('userresults'); });
However, we're using a shortcut that Laravel provides, and only passing along two of the three form fields we asked for.
On the next page, we use Input::old()
to display the flashed input.
See also
- The Creating a simple form recipe