How to create contact us page in Laravel?
Creating a "Contact Us" page in Laravel involves several steps, including setting up routes, creating a controller, designing the view, and handling form submissions. Below is a step-by-step guide with examples to help you create a basic "Contact Us" page in Laravel.
Step 1: Set Up Routes
First, define a route for the contact us page in the web.php file located in the routes directory.
php code
// routes/web.php
Route::get('/contact', 'ContactController@showForm');
Route::post('/contact', 'ContactController@submitForm');
Step 2: Create a Controller
Generate a new controller named ContactController using the Artisan command-line tool.
code
php artisan make:controller ContactController
In the ContactController, create methods to display the contact form and handle form submissions.
php code
// app/Http/Controllers/ContactController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ContactController extends Controller
{
public function showForm()
{
return view('contact');
}
public function submitForm(Request $request)
{
// Handle form submission logic here
// You can access form data using $request->input('fieldname')
// Send email, store in the database, etc.
// Redirect back to the contact form with a success message
return redirect('/contact')->with('success', 'Your message has been sent successfully!');
}
}
Step 3: Create the View
Create a Blade template for the contact form. Create a new file named contact.blade.php in the resources/views directory.
html code
<!-- resources/views/contact.blade.php -->
@extends('layouts.app')
@section('content')
<div class="container">
<h1>Contact Us</h1>
@if(session('success'))
<div class="alert alert-success">
{{ session('success') }}
</div>
@endif
<form method="POST" action="/contact">
@csrf
<div class="form-group">
<label for="name">Your Name</label>
<input type="text" class="form-control" id="name" name="name" required>
</div>
<div class="form-group">
<label for="email">Email Address</label>
<input type="email" class="form-control" id="email" name="email" required>
</div>
<div class="form-group">
<label for="message">Message</label>
<textarea class="form-control" id="message" name="message" rows="4" required></textarea>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</div>
@endsection
Step 4: Handle Form Validation (Optional)
You can add validation rules to the form fields in the submitForm method of the ContactController to ensure the data entered by the user is valid.
php code
// In ContactController.php
public function submitForm(Request $request)
{
$request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|max:255',
'message' => 'required|string|max:1000',
]);
// Form submission logic
// ...
return redirect('/contact')->with('success', 'Your message has been sent successfully!');
}
Step 5: Displaying Validation Errors (Optional)
If there are validation errors, you can display them in your form.
html code
<!-- resources/views/contact.blade.php -->
@if($errors->any())
<div class="alert alert-danger">
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
Now, when users visit the "/contact" URL, they will see the contact form. When they submit the form, the data will be sent to the submitForm method in the ContactController, where you can handle it as needed (e.g., send an email, store it in the database, etc.). If there are validation errors, they will be displayed back to the user.
Comments
Post a Comment