📖 Scenario: You are creating a simple web page where users can submit their name using a form. This form will collect the input and prepare it for processing.
🎯 Goal: Build a Laravel form that accepts a user's name and prepares it for submission.
📋 What You'll Learn
Create a route for the form display
Create a Blade view with a form containing a text input named username
Add a CSRF token field inside the form
Add a submit button labeled Submit
💡 Why This Matters
🌍 Real World
Forms are everywhere on websites for collecting user data like names, emails, and messages. This project shows how to build a simple form in Laravel.
💼 Career
Understanding form input handling is essential for backend and full-stack developers working with Laravel to create interactive web applications.
Progress0 / 4 steps
1
Create a route for the form
In the routes/web.php file, create a GET route with the URL /userform that returns the view named userform.
Laravel
Hint
Use Route::get with the URL '/userform' and return view('userform').
2
Create the Blade view with a form
Create a Blade file named userform.blade.php in the resources/views folder. Inside it, add a form with method POST and action /submitname. Add a text input with the name username.
Laravel
Hint
Use a <form> tag with method="POST" and action="/submitname". Inside, add <input type="text" name="username">.
3
Add CSRF token and submit button
Inside the form in userform.blade.php, add the Blade directive @csrf for security. Then add a submit button with the text Submit.
Laravel
Hint
Use @csrf inside the form and add <button type="submit">Submit</button>.
4
Create POST route to handle form submission
In routes/web.php, add a POST route for /submitname that accepts the request and returns a simple string with the submitted username using request('username').
Laravel
Hint
Use Route::post('/submitname', function () { return 'Hello, ' . request('username'); });.
Practice
(1/5)
1. What is the main purpose of adding a name attribute to an input field in a Laravel form?
easy
A. It identifies the input data when the form is submitted
B. It styles the input field with CSS
C. It disables the input field
D. It adds a placeholder text inside the input
Solution
Step 1: Understand the role of the name attribute
The name attribute is used to label the input data so the server can identify it when the form is submitted.
Step 2: Recognize other options are unrelated to data submission
Styling, disabling, or placeholder text do not affect how data is sent to the server.
Final Answer:
It identifies the input data when the form is submitted -> Option A
Quick Check:
Input name = data key [OK]
Hint: Name attribute links input to server data key [OK]
Common Mistakes:
Confusing name with styling or placeholder
Thinking name disables input
Ignoring name causes missing data on submit
2. Which of the following is the correct way to include CSRF protection in a Laravel Blade form?
easy
A. <form> @csrf </form>
B. <form> <csrf> </form>
C. <form> <input type='csrf'> </form>
D. <form> <token> @csrf </form>
Solution
Step 1: Recall Laravel's CSRF directive
Laravel uses the Blade directive @csrf inside forms to add a hidden CSRF token input automatically.
Step 2: Check syntax correctness
Only @csrf is valid; other tags like <csrf> or <token> are invalid HTML or Blade syntax.
Final Answer:
<form> @csrf </form> -> Option A
Quick Check:
Use @csrf in Blade forms [OK]
Hint: Use @csrf inside Blade forms for security [OK]
Laravel requires a CSRF token in POST forms to prevent attacks. This form lacks @csrf.
Step 2: Validate other parts
Input type 'text' is allowed for emails (though 'email' is better), action URL is valid, and name attribute is required.
Final Answer:
Missing @csrf directive for security -> Option D
Quick Check:
POST forms need @csrf [OK]
Hint: Always add @csrf in POST forms [OK]
Common Mistakes:
Forgetting @csrf causes 419 error
Thinking input type must be 'email' for emails
Assuming action URL must be absolute
5. You want to create a form that submits a user's age but only accepts numbers between 18 and 99. Which is the best way to enforce this in a Laravel Blade form input?
hard
A. <input type="text" name="age" pattern="[18-99]">
B. <input type="number" name="age" min="18" max="99" required>
C. <input type="number" name="age" min="18" max="99">
D. <input type="text" name="age" required>
Solution
Step 1: Use input type number with min and max attributes
Setting type="number" with min="18" and max="99" restricts input to numbers in that range.
Step 2: Add required to ensure user cannot submit empty
This makes the field mandatory, improving validation before submission.
Final Answer:
<input type="number" name="age" min="18" max="99" required> -> Option B
Quick Check:
Number input with min/max and required [OK]
Hint: Use number input with min, max, and required [OK]
Common Mistakes:
Using text input with incorrect pattern syntax
Omitting required allows empty submission
Using min/max without input type number
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.