mirror of
https://github.com/rico-vz/HeimerdingerLoL.git
synced 2025-12-06 18:20:48 +01:00
feat(contact): add ContactSubmissionController and contact form view
- Added ContactSubmissionController with index and store methods for handling contact submissions. - Created a new Blade view for the contact form with fields for name, email, discord, category, subject, and message. - Updated routes to include endpoints for displaying the contact form and submitting it.
This commit is contained in:
21
app/Http/Controllers/ContactSubmissionController.php
Normal file
21
app/Http/Controllers/ContactSubmissionController.php
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Http\Requests\ContactSubmissionRequest;
|
||||||
|
use App\Models\ContactSubmission;
|
||||||
|
|
||||||
|
class ContactSubmissionController extends Controller
|
||||||
|
{
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
return view('contact.index');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function store(ContactSubmissionRequest $request)
|
||||||
|
{
|
||||||
|
$contactSubmission = ContactSubmission::create($request->validated());
|
||||||
|
|
||||||
|
return redirect()->route('contact.index')->with('success', 'Your message has been sent!');
|
||||||
|
}
|
||||||
|
}
|
||||||
44
resources/views/contact/index.blade.php
Normal file
44
resources/views/contact/index.blade.php
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
@extends('layouts.app')
|
||||||
|
|
||||||
|
@section('title', 'Heimerdinger.LoL • Contact')
|
||||||
|
@section('description', 'Contact Heimerdinger.LoL for any inquiries, feedback, or suggestions. We are always looking to
|
||||||
|
improve our website and content.')
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
<form method="POST" action="{{route('contact.store')}}" class="max-w-screen-md mx-auto mt-2 prose prose-stone">
|
||||||
|
@csrf
|
||||||
|
@honeypot
|
||||||
|
<div class="mb-6">
|
||||||
|
<label for="name" class="block mb-2 text-sm font-bold text-stone-300">Name</label>
|
||||||
|
<input type="text" id="name" name="name" class="w-full p-2 border border-stone-300 rounded">
|
||||||
|
</div>
|
||||||
|
<div class="mb-6">
|
||||||
|
<label for="email" class="block mb-2 text-sm font-bold text-stone-300">Email</label>
|
||||||
|
<input type="email" id="email" name="email" class="w-full p-2 border border-stone-300 rounded">
|
||||||
|
</div>
|
||||||
|
<div class="mb-6">
|
||||||
|
<label for="discord" class="block mb-2 text-sm font-bold text-stone-300">Discord (optional)</label>
|
||||||
|
<input type="text" id="discord" name="discord" class="w-full p-2 border border-stone-300 rounded">
|
||||||
|
</div>
|
||||||
|
<div class="mb-6">
|
||||||
|
<label for="category" class="block mb-2 text-sm font-bold text-stone-300">Category</label>
|
||||||
|
<select id="category" name="category" class="w-full p-2 border border-stone-300 rounded">
|
||||||
|
<option value="question">Question</option>
|
||||||
|
<option value="advertising">Advertising</option>
|
||||||
|
<option value="bug_report">Bug Report</option>
|
||||||
|
<option value="feedback">Feedback</option>
|
||||||
|
<option value="other">Other</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="mb-6">
|
||||||
|
<label for="subject" class="block mb-2 text-sm font-bold text-stone-300">Subject</label>
|
||||||
|
<input type="text" id="subject" name="subject" class="w-full p-2 border border-stone-300 rounded">
|
||||||
|
</div>
|
||||||
|
<div class="mb-6">
|
||||||
|
<label for="message" class="block mb-2 text-sm font-bold text-stone-300">Message</label>
|
||||||
|
<textarea id="message" name="message" class="w-full p-2 border border-stone-300 rounded"></textarea>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="w-full p-3 bg-orange-500 text-stone-900 rounded hover:bg-orange-400">Submit</button>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
@endsection
|
||||||
@@ -4,16 +4,20 @@ use App\Http\Controllers\AboutController;
|
|||||||
use App\Http\Controllers\AssetsController;
|
use App\Http\Controllers\AssetsController;
|
||||||
use App\Http\Controllers\ChampionController;
|
use App\Http\Controllers\ChampionController;
|
||||||
use App\Http\Controllers\ChampionSkinController;
|
use App\Http\Controllers\ChampionSkinController;
|
||||||
|
use App\Http\Controllers\ContactSubmissionController;
|
||||||
use App\Http\Controllers\FAQController;
|
use App\Http\Controllers\FAQController;
|
||||||
use App\Http\Controllers\HomeController;
|
use App\Http\Controllers\HomeController;
|
||||||
use App\Http\Controllers\PostsController;
|
use App\Http\Controllers\PostsController;
|
||||||
use App\Http\Controllers\SaleController;
|
use App\Http\Controllers\SaleController;
|
||||||
use App\Http\Controllers\SummonerEmoteController;
|
use App\Http\Controllers\SummonerEmoteController;
|
||||||
use App\Http\Controllers\SummonerIconController;
|
use App\Http\Controllers\SummonerIconController;
|
||||||
|
use App\Http\Requests\ContactSubmissionRequest;
|
||||||
use App\Models\Champion;
|
use App\Models\Champion;
|
||||||
use App\Models\SummonerIcon;
|
use App\Models\SummonerIcon;
|
||||||
use Illuminate\Support\Facades\Route;
|
use Illuminate\Support\Facades\Route;
|
||||||
use Spatie\Sheets\Sheet;
|
use Spatie\Sheets\Sheet;
|
||||||
|
use Spatie\Honeypot\ProtectAgainstSpam;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
@@ -64,5 +68,11 @@ Route::get('/posts', static fn () => (new PostsController())->index())->name('po
|
|||||||
|
|
||||||
Route::get('/post/{post}', static fn (Sheet $post) => (new PostsController())->show($post))->name('posts.show');
|
Route::get('/post/{post}', static fn (Sheet $post) => (new PostsController())->show($post))->name('posts.show');
|
||||||
|
|
||||||
|
// Contact
|
||||||
|
Route::get('/contact', static fn () => (new ContactSubmissionController())->index())->name('contact.index');
|
||||||
|
Route::post('/contact', function (ContactSubmissionRequest $request) {
|
||||||
|
return (new ContactSubmissionController())->store($request);
|
||||||
|
})->name('contact.store')->middleware(ProtectAgainstSpam::class);
|
||||||
|
|
||||||
// Pulse
|
// Pulse
|
||||||
Route::get(config('app.login_route'), static fn () => redirect('/pulse'))->name('login')->middleware('auth.basic');
|
Route::get(config('app.login_route'), static fn () => redirect('/pulse'))->name('login')->middleware('auth.basic');
|
||||||
|
|||||||
Reference in New Issue
Block a user