wip: on the contact pages

This commit is contained in:
K Muller 2025-09-02 16:48:56 +02:00
parent d31820346e
commit 20d166f2bc
16 changed files with 986 additions and 2 deletions

View file

@ -0,0 +1,3 @@
Hash::make('password');
Hash::make('alexisgrossebitemesbr');
exit;

View file

@ -0,0 +1,211 @@
<?php
namespace App\Enums;
use Uwil\LaravelCommon\Traits\Enums\BaseEnum;
enum ContactFormType: int
{
use BaseEnum;
case collaborator = 1;
case breeder = 2;
case professional = 3;
case restauration = 4;
case export = 5;
case finance = 6;
case engagements = 7;
case product = 8;
case info = 9;
case press = 10;
/**
* Optionnal SUBTYPES definition.
*
* @phpstan-ignore-next-line
*/
private const SUBTYPES = [
self::professional->name => [
self::restauration,
self::export,
],
self::collaborator->name => [],
self::breeder->name => [],
self::restauration->name => [],
self::export->name => [],
self::finance->name => [],
self::engagements->name => [],
self::product->name => [],
self::info->name => [],
self::press->name => [],
];
/**
* Get Class
*
* @return string|null
*/
public function isSubtype(): bool
{
foreach (self::SUBTYPES as $subtypes) {
if (in_array($this, $subtypes, true)) {
return true;
}
}
return false;
}
/**
* Optionnal TOPLEVELS definition.
*
* @phpstan-ignore-next-line
*/
private const TOPLEVELS = [
self::professional->name => true,
self::collaborator->name => true,
self::breeder->name => true,
self::restauration->name => false,
self::export->name => false,
self::finance->name => true,
self::engagements->name => true,
self::product->name => true,
self::info->name => true,
self::press->name => true,
];
/**
* Get Class
*
* @return string|null
*/
public function topLevel(): ?string
{
return !empty(self::TOPLEVELS[$this->name]) ?
self::TOPLEVELS[$this->name] : false;
}
/**
* Optionnal labels definition.
*
* @phpstan-ignore-next-line
*/
private const LABELS = [
self::collaborator->name => 'enums.contactFormType.collaborator.label',
self::breeder->name => 'enums.contactFormType.breeder.label',
self::professional->name => 'enums.contactFormType.professional.label',
self::restauration->name => 'enums.contactFormType.restauration.label',
self::export->name => 'enums.contactFormType.export.label',
self::finance->name => 'enums.contactFormType.finance.label',
self::engagements->name => 'enums.contactFormType.engagements.label',
self::product->name => 'enums.contactFormType.product.label',
self::info->name => 'enums.contactFormType.info.label',
self::press->name => 'enums.contactFormType.press.label',
];
/**
* Get the data-target
*
* @return string
*/
public function dataTarget(): string
{
return match ($this) {
self::professional => 'askPro',
};
}
/**
* Get the data-target
*
* @return string
*/
public function hasBlankTarget(): string
{
$locale = "fr"; #FIXME: récupérer la vraie locale
return match (true) {
$this === self::restauration => $locale === "en" ? true : false,
default => false,
};
}
/**
* Get the slug for each type
*
* @return string|null
*/
public function slug(): string|null
{
return match ($this) {
self::collaborator => __('enums.contactFormType.collaborator.slug'),
self::breeder => __('enums.contactFormType.breeder.slug'),
self::professional => null,
self::restauration => __('enums.contactFormType.restauration.slug'),
self::export => __('enums.contactFormType.export.slug'),
self::finance => __('enums.contactFormType.finance.slug'),
self::engagements => __('enums.contactFormType.engagements.slug'),
self::product => __('enums.contactFormType.product.slug'),
self::info => __('enums.contactFormType.info.slug'),
self::press => null,
};
}
/**
* Get the route
*
* @return string|null
*/
public function route()
{
$commonRoutes = [
self::collaborator,
self::breeder,
self::export,
self::finance,
self::engagements,
self::product,
self::info,
];
$locale = "fr"; #FIXME: récupérer la vraie locale
return match (true) {
in_array($this, $commonRoutes, true) => route('front.contact.show', ['slug' => $this->slug()]),
$this === self::professional => null,
$this === self::press => route('front.espace-presse') . '#page-press-form',
$this === self::restauration => $locale === "fr" ? route('front.contact.show', ['slug' => $this->slug()]) : 'https://www.legauloisprofessionnel.fr/contactez-nous',
default => null,
};
}
/**
* Get the slug for each type
*
* @return string|null
*/
public function seo()
{
$commonRoutes = [
self::collaborator,
self::breeder,
self::export,
self::finance,
self::engagements,
self::professional,
self::product,
self::info,
self::press,
self::restauration
];
return match (true) {
in_array($this, $commonRoutes, true) => [
'title' => __('enums.contactFormType.' . $this->name . '.seo.title'),
'description' => __('enums.contactFormType.' . $this->name . '.seo.description'),
],
default => [],
};
}
}

View file

@ -0,0 +1,28 @@
<?php
namespace App\Http\Controllers\Front;
use App\Enums\ContactFormType;
use Illuminate\Http\Request;
class ContactController
{
public function index()
{
$types = ContactFormType::toArray();
return view('front.pages.contact.index', compact('types'));
}
public function show(string $slug)
{
$enumType = collect(ContactFormType::all())->first(function ($enum) use ($slug) {
return $enum->slug() === $slug;
});
if (!$enumType) {
return redirect()->route('front.contact.index');
}
return view('front.pages.contact.show', compact('enumType'));
}
}

View file

@ -6,4 +6,43 @@ return [
"admin" => "Admin",
"visitor" => "Visitor",
],
'contactFormType' => [
'collaborator' => [
'label' => 'join us as an employee',
'slug' => 'join-us-as-an-employee'
],
'breeder' => [
'label' => 'join us as a farmer',
'slug' => 'join us as a farmer'
],
'professional' => [
'label' => 'a request as a professional'
],
'restauration' => [
'label' => 'foodservice, Industry, Retailer France & Overseas',
],
'export' => [
'label' => 'other countries / Export',
'slug' => 'export'
],
'finance' => [
'label' => 'finance',
'slug' => 'finance-2' #FIXME: revoir le slug
],
'engagements' => [
'label' => 'our commitments',
'slug' => 'our-commitments-2' #FIXME: revoir le slug
],
'product' => [
'label' => 'product information',
'slug' => 'product-information'
],
'info' => [
'label' => 'other general information',
'slug' => 'other-general-information'
],
'press' => [
'label' => 'a press request'
],
],
];

View file

@ -6,4 +6,44 @@ return [
"admin" => "Administrateur",
"visitor" => "Visiteur",
],
'contactFormType' => [
'collaborator' => [
'label' => 'nous rejoindre en tant que collaborateur',
'slug' => 'nous-rejoindre-en-tant-que-collaborateur'
],
'breeder' => [
'label' => 'nous rejoindre en tant qu’éleveur',
'slug' => 'nous-rejoindre-en-tant-queleveur'
],
'professional' => [
'label' => 'une demande en tant que professionnel'
],
'restauration' => [
'label' => 'restaurations, Distributeurs et Détaillants France',
'slug' => 'une-demande-en-tant-que-client-detaillant-distributeur'
],
'export' => [
'label' => 'l’export',
'slug' => 'lexport'
],
'finance' => [
'label' => 'la finance',
'slug' => 'la-finance'
],
'engagements' => [
'label' => 'nos engagements',
'slug' => 'nos-engagements'
],
'product' => [
'label' => 'une information produit',
'slug' => 'une-information-produit'
],
'info' => [
'label' => 'une autre information générale',
'slug' => 'une-autre-information-generale'
],
'press' => [
'label' => 'une demande presse'
],
],
];

View file

@ -0,0 +1,4 @@
<div class="back-button-wrapper">
<a class="back-button" href="{{ route('front.contact.index') }}" title="Retour au choix de contact">Retour au choix de contact
<i class="btn__icon btn__icon_arrow-right"></i></a>
</div>

View file

@ -1,3 +1,8 @@
@php
$type = isset($type) && $type ? $type : "link";
@endphp
@if($type === "link")
<a class="{{ isset($class) ? $class : 'engagements__btn'}} btn"
href="{{ $url }}"
title="{{ $title }}"
@ -7,3 +12,11 @@ title="{{ $title }}"
{{ $title }}
<i class="btn__icon {{ $buttonIcon }}"></i>
</a>
@else
<button class="{{ isset($class) ? $class : 'engagements__btn'}} btn"
title="{{ $title }}" data-target="{{ isset($dataTarget) ? $dataTarget : ''}}"
>
{{ $title }}
<i class="btn__icon {{ $buttonIcon }}"></i>
</button>
@endif

View file

@ -0,0 +1,10 @@
<div class="form__field">
<div class="form__field-title">{{ $label }} {{ $required ? '*' : '' }} <span class="normal">(choix
multiple)</span></div>
@foreach($options as $option)
<label class="form__field-pseudolabel">
<input type="checkbox" name="{{ $name }}" value="{{ $option['value'] }}" required="">
<span class="form__field-pseudocircle">{{ $option['value'] }}</span>
</label>
@endforeach
</div>

View file

@ -0,0 +1,5 @@
<div class="form__field">
<div class="form__field-title">{{ $label }} {{ $required ? '*' : '' }}</div>
<input type="{{ isset($type) ? $type : 'text' }}" name="{{ $name }}" size="{{ isset($size) ? $size : '40'}}" class="form__input"
placeholder="{{ $placeholder }}" autocomplete="{{ isset($autoComplete) ? $autoComplete : '' }}" required="{{ $required }}">
</div>

View file

@ -0,0 +1,4 @@
<h1 class="{{ isset($h1Class) ? $h1Class : 'page-contacts__title'}} title"><span class="title-text">{!! $title !!}</span></h1>
@if (isset($subtitle))
<h2 class="{{ isset($h2Class) ? $h2Class : 'contacts-page-subtitle'}} subtitle_paint">{{ $subtitle }}</h2>
@endif

View file

@ -1,4 +1,4 @@
<h2 class="{{ isset($class) ? $class : ''}} textblock__title title">
<h2 class="{{ isset($class) ? $class : 'textblock__title'}} title">
<span class="title-text">{!! $title !!}</span>
@if (isset($subtitle))
<span class="{{ isset($secondaryClass) ? $secondaryClass : ''}} subtitle-text textblock__subtitle subtitle subtitle_paint">{{ $subtitle }}</span>

View file

@ -35,7 +35,7 @@
<a href="{{ route('front.nos-metiers') }}">Nos metiers</a>
</li>
<li id="menu-item-6108" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6108">
<a href="/nous-contacter/">Nous contacter</a>
<a href="{{ route('front.contact.index') }}">Nous contacter</a>
</li>
</ul>

View file

@ -0,0 +1,43 @@
@extends('front.layouts.layout')
@section('title', 'Nous contacter | Les équipes du Groupe LDC vous répondent')
@section('description',
'Pour toute question, n\'hésitez pas à nous contacter grâce à nos formulaires de contact dédiés.
Nos équipes seront présentes pour vous répondre !')
@section('content')
<div class="page-contacts fw page_nohero">
@include('front.breadcrumbs.breadcrumb-body')
<x-front.pages.title h1Class="page-contacts__title" title="Nous contacter" />
<div class="contact-index">
@foreach ($types as $type)
@if ($type->toplevel)
@php
$enum = \App\Enums\ContactFormType::make($type->value);
$hasSubType = count($type->subtype) > 0;
$dataTarget = $hasSubType ? $enum->dataTarget() : null;
@endphp
<x-front.cta title="{{ ucfirst($type->label) }}" class="textblock__info-btn" url="{{ $enum->route() ? $enum->route() : '' }}"
buttonIcon="btn__icon_arrow-right" type="{{ $hasSubType ?? null }}" dataTarget="{{ $dataTarget }}" />
@if (count($type->subtype) > 0)
<div id="{{ $dataTarget }}" class="contacts-group-buttons">
@foreach ($type->subtype as $sub)
<div>
<x-front.cta
target="{{ $sub->hasBlankTarget() ?? '' }}"
title="{{ ucfirst($sub->label()) }}" class="textblock__info-btn" url="{{ $sub->route() ? $sub->route() : '' }}"
buttonIcon="btn__icon_arrow-right" />
</div>
@endforeach
</div>
@endif
@endif
@endforeach
</div>
</div>
@endsection

View file

@ -0,0 +1,565 @@
@extends('front.layouts.layout')
@section('title', $enumType->seo()['title'])
@section('description', $enumType->seo()['description'])
@section('content')
<div class="page-contacts fw page_nohero">
@include('front.breadcrumbs.breadcrumb-body')
<x-front.pages.title h1Class="page-contacts__title" h2Class="contacts-page-subtitle" title="Nous contacter"
subtitle="{{ ucfirst($enumType->label()) }}" />
<div class="contacts-category-page wrapper">
@if ($enumType->value === 1)
<div class="contact-page-tetx-block">
<p>
Vous souhaitez consulter nos offres d'emploi, de stage et d'alternance ; ou nous adresser une
candidature spontanée ? Cliquez ici : <a href="https://recrutement.ldc.fr/fr/annonces?s_o=Site%20ldc"
target="_blank" rel="noreferer noopener">recrutement.ldc.fr</a>
<br>
Si votre demande concerne un autre sujet, merci de contacter par téléphone le service RH de la
société
concernée.
</p>
</div>
@endif
<x-front.back-to-contact />
@if ($enumType->value === 2)
<div class="contacts-form__wrapper">
<form class="form">
<div class="form__container">
<div class="form-top-text">Vous êtes éleveur de volailles ou souhaitez le devenir, et nous
rejoindre ? <br>Décrivez-nous votre projet le plus précisément possible afin que nous
puissions orienter votre demande vers l'interlocuteur adéquat. </div>
<div class="form__row justify-content-center">
<div class="form__field ">
<span class="cn-cookie-activate" data-cookie-name="recaptcha">
<span>
<span>Vous devez accepter les cookies reCaptcha pour utiliser les
formulaires.</span>
<small>Acceptez ce cookie pour utiliser les formulaires</small>
</span>
<button class="btn btn-red">Autoriser</button>
</span>
</div>
</div>
<div class="form__row">
<x-front.inputs.simple-input label="Nom" required="true" name="lastname"
placeholder="Votre Nom" autoComplete="family-name" type="text" />
<x-front.inputs.simple-input label="Prénom" required="true" name="firstname"
placeholder="Votre Prénom" autoComplete="given-name" type="text" />
</div>
<div class="form__row">
<x-front.inputs.simple-input label="Téléphone" required="true" name="phone"
placeholder="Par exemple, 02 43 62 70 00" autoComplete="tel" type="tel" />
<x-front.inputs.simple-input label="Adresse Email" required="true" name="email"
placeholder="Prenom.nom@mail.fr" autoComplete="off" type="email" />
</div>
<div class="form__row">
<x-front.inputs.checkbox label="Type d'élevage souhaité" required="true" name="typeelevage"
:options="[
['value' => 'Poulets/dindes/pintades'],
['value' => 'Canards'],
['value' => 'Poules pondeuses'],
['value' => 'Autres'],
]" />
</div>
<div class="form__row">
<div class="form__field">
<div class="form__field-title">Zone géographique de votre projet *</div>
<div class="geographic-checkboxes-block">
<div class="geographic-checkboxes-result form__input"><span
class="zones-wrapper">Liste déroulante de départements</span>
</div>
<div class="geographic-checkboxes-list">
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Ain" required="">
<span class="form__field-pseudosquare">Ain</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Aisne" required="">
<span class="form__field-pseudosquare">Aisne</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Allier" required="">
<span class="form__field-pseudosquare">Allier</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Alpes-de-Haute-Provence"
required="">
<span class="form__field-pseudosquare">Alpes-de-Haute-Provence</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Alpes-Maritimes"
required="">
<span class="form__field-pseudosquare">Alpes-Maritimes</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Ardèche" required="">
<span class="form__field-pseudosquare">Ardèche</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Ardennes" required="">
<span class="form__field-pseudosquare">Ardennes</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Ariège" required="">
<span class="form__field-pseudosquare">Ariège</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Aube" required="">
<span class="form__field-pseudosquare">Aube</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Aude" required="">
<span class="form__field-pseudosquare">Aude</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Aveyron" required="">
<span class="form__field-pseudosquare">Aveyron</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Bas-Rhin" required="">
<span class="form__field-pseudosquare">Bas-Rhin</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Bouches-du-Rhône"
required="">
<span class="form__field-pseudosquare">Bouches-du-Rhône</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Calvados" required="">
<span class="form__field-pseudosquare">Calvados</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Cantal" required="">
<span class="form__field-pseudosquare">Cantal</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Charente" required="">
<span class="form__field-pseudosquare">Charente</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Charente-Maritime"
required="">
<span class="form__field-pseudosquare">Charente-Maritime</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Cher" required="">
<span class="form__field-pseudosquare">Cher</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Corrèze" required="">
<span class="form__field-pseudosquare">Corrèze</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Corse-du-Sud"
required="">
<span class="form__field-pseudosquare">Corse-du-Sud</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Côte-d'Or" required="">
<span class="form__field-pseudosquare">Côte-d'Or</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Côtes-d'Armor"
required="">
<span class="form__field-pseudosquare">Côtes-d'Armor</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Creuse" required="">
<span class="form__field-pseudosquare">Creuse</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Deux-Sèvres"
required="">
<span class="form__field-pseudosquare">Deux-Sèvres</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Dordogne" required="">
<span class="form__field-pseudosquare">Dordogne</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Doubs" required="">
<span class="form__field-pseudosquare">Doubs</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Drôme" required="">
<span class="form__field-pseudosquare">Drôme</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Essonne" required="">
<span class="form__field-pseudosquare">Essonne</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Eure" required="">
<span class="form__field-pseudosquare">Eure</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Eure-et-Loir"
required="">
<span class="form__field-pseudosquare">Eure-et-Loir</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Finistère" required="">
<span class="form__field-pseudosquare">Finistère</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Gard" required="">
<span class="form__field-pseudosquare">Gard</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Gers" required="">
<span class="form__field-pseudosquare">Gers</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Gironde" required="">
<span class="form__field-pseudosquare">Gironde</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Guadeloupe" required="">
<span class="form__field-pseudosquare">Guadeloupe</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Guyane" required="">
<span class="form__field-pseudosquare">Guyane</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Haut-Rhin" required="">
<span class="form__field-pseudosquare">Haut-Rhin</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Haute-Corse"
required="">
<span class="form__field-pseudosquare">Haute-Corse</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Haute-Garonne"
required="">
<span class="form__field-pseudosquare">Haute-Garonne</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Haute-Loire"
required="">
<span class="form__field-pseudosquare">Haute-Loire</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Haute-Marne"
required="">
<span class="form__field-pseudosquare">Haute-Marne</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Haute-Saône"
required="">
<span class="form__field-pseudosquare">Haute-Saône</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Haute-Savoie"
required="">
<span class="form__field-pseudosquare">Haute-Savoie</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Haute-Vienne"
required="">
<span class="form__field-pseudosquare">Haute-Vienne</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Hautes-Alpes"
required="">
<span class="form__field-pseudosquare">Hautes-Alpes</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Hautes-Pyrénées"
required="">
<span class="form__field-pseudosquare">Hautes-Pyrénées</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Hauts-de-Seine"
required="">
<span class="form__field-pseudosquare">Hauts-de-Seine</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Hérault" required="">
<span class="form__field-pseudosquare">Hérault</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Ille-et-Vilaine"
required="">
<span class="form__field-pseudosquare">Ille-et-Vilaine</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Indre" required="">
<span class="form__field-pseudosquare">Indre</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Indre-et-Loire"
required="">
<span class="form__field-pseudosquare">Indre-et-Loire</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Isère" required="">
<span class="form__field-pseudosquare">Isère</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Jura" required="">
<span class="form__field-pseudosquare">Jura</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="La,Réunion" required="">
<span class="form__field-pseudosquare">La,Réunion</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Landes" required="">
<span class="form__field-pseudosquare">Landes</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Loir-et-Cher"
required="">
<span class="form__field-pseudosquare">Loir-et-Cher</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Loire" required="">
<span class="form__field-pseudosquare">Loire</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Loire-Atlantique"
required="">
<span class="form__field-pseudosquare">Loire-Atlantique</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Loiret" required="">
<span class="form__field-pseudosquare">Loiret</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Lot" required="">
<span class="form__field-pseudosquare">Lot</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Lot-et-Garonne"
required="">
<span class="form__field-pseudosquare">Lot-et-Garonne</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Lozère" required="">
<span class="form__field-pseudosquare">Lozère</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Lyon,Metropolis"
required="">
<span class="form__field-pseudosquare">Lyon,Metropolis</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Maine-et-Loire"
required="">
<span class="form__field-pseudosquare">Maine-et-Loire</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Manche" required="">
<span class="form__field-pseudosquare">Manche</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Marne" required="">
<span class="form__field-pseudosquare">Marne</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Martinique" required="">
<span class="form__field-pseudosquare">Martinique</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Mayenne" required="">
<span class="form__field-pseudosquare">Mayenne</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Mayotte" required="">
<span class="form__field-pseudosquare">Mayotte</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Meurthe-et-Moselle"
required="">
<span class="form__field-pseudosquare">Meurthe-et-Moselle</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Meuse" required="">
<span class="form__field-pseudosquare">Meuse</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Morbihan" required="">
<span class="form__field-pseudosquare">Morbihan</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Moselle" required="">
<span class="form__field-pseudosquare">Moselle</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Nièvre" required="">
<span class="form__field-pseudosquare">Nièvre</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Nord" required="">
<span class="form__field-pseudosquare">Nord</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Oise" required="">
<span class="form__field-pseudosquare">Oise</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Orne" required="">
<span class="form__field-pseudosquare">Orne</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Paris" required="">
<span class="form__field-pseudosquare">Paris</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Pas-de-Calais"
required="">
<span class="form__field-pseudosquare">Pas-de-Calais</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Puy-de-Dôme"
required="">
<span class="form__field-pseudosquare">Puy-de-Dôme</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Pyrénées-Atlantiques"
required="">
<span class="form__field-pseudosquare">Pyrénées-Atlantiques</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Pyrénées-Orientales"
required="">
<span class="form__field-pseudosquare">Pyrénées-Orientales</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Rhône" required="">
<span class="form__field-pseudosquare">Rhône</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Saône-et-Loire"
required="">
<span class="form__field-pseudosquare">Saône-et-Loire</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Sarthe" required="">
<span class="form__field-pseudosquare">Sarthe</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Savoie" required="">
<span class="form__field-pseudosquare">Savoie</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Seine-Maritime"
required="">
<span class="form__field-pseudosquare">Seine-Maritime</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Seine-et-Marne"
required="">
<span class="form__field-pseudosquare">Seine-et-Marne</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Seine-Saint-Denis"
required="">
<span class="form__field-pseudosquare">Seine-Saint-Denis</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Somme" required="">
<span class="form__field-pseudosquare">Somme</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Tarn" required="">
<span class="form__field-pseudosquare">Tarn</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Tarn-et-Garonne"
required="">
<span class="form__field-pseudosquare">Tarn-et-Garonne</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Territoire,de,Belfort"
required="">
<span class="form__field-pseudosquare">Territoire,de,Belfort</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Var" required="">
<span class="form__field-pseudosquare">Var</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Val-d'Oise" required="">
<span class="form__field-pseudosquare">Val-d'Oise</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Val-de-Marne"
required="">
<span class="form__field-pseudosquare">Val-de-Marne</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Vaucluse" required="">
<span class="form__field-pseudosquare">Vaucluse</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Vendée" required="">
<span class="form__field-pseudosquare">Vendée</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Vienne" required="">
<span class="form__field-pseudosquare">Vienne</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Vosges" required="">
<span class="form__field-pseudosquare">Vosges</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Yonne" required="">
<span class="form__field-pseudosquare">Yonne</span>
</label>
<label class="form__field-pseudolabel">
<input type="checkbox" name="zonegeo" value="Yvelines" required="">
<span class="form__field-pseudosquare">Yvelines</span>
</label>
</div>
</div>
</div>
</div>
<div class="form__container">
<div class="form__field-title">Votre projet *</div>
<div class="form__field">
<textarea name="message" cols="40" rows="10" class="form__input"
placeholder="Détaillez ici votre projet et votre demande" required=""></textarea>
</div>
<div class="form__row">
<div class="form__field">
<span class="form__field-label-text">Les informations recueillies à partir de
ce formulaire sont traitées par le Responsable de Traitement pour donner
suite à votre demande de contact. Pour connaître vos droits, vous pouvez
consulter <br> <a href="/politique-de-confidentialite/" target="_blank"
rel="noreferer noopener">la Charte de confidentialité</a></span>
</div>
<div class="form__field">
<div class="form__tip">* Champs obligatoires</div>
</div>
</div>
<div class="form__response" style="display: none;">Un ou plusieurs champs contiennent
une erreur. Veuillez vérifier et essayer à nouveau. </div>
<div class="form__row">
<div class="form-submit">
<input type="submit" value="Envoyer" class="form-submit__btn btn">
</div>
</div>
</div>
</div>
</form>
</div>
@endif
</div>
</div>
@endsection

View file

@ -12,6 +12,16 @@ Breadcrumbs::for('front.homepage', function (Generator $trail) {
);
});
// * CONTACT PAGE
Breadcrumbs::for('front.contact', function (Generator $trail) {
$trail->parent('front.homepage');
$trail->push(
Str::of(trans('front.contact'))->ucfirst(),
route('front.contact')
);
});
// * SEARCH PAGE
Breadcrumbs::for('front.search', function (Generator $trail) {
$trail->parent('front.homepage');

View file

@ -1,11 +1,20 @@
<?php
use App\Http\Controllers\Front\HomeController;
use App\Http\Controllers\Front\ContactController;
use Illuminate\Support\Facades\Route;
Route::name('front.')->group(function () {
Route::get('/', [HomeController::class, 'homepage'])->name('homepage');
Route::prefix('nous-contacter')->name('contact.')->group(function() {
Route::get('', [ContactController::class, 'index'])->name('index');
Route::get('{slug}', [ContactController::class, 'show'])->name('show');
});
Route::get('search', function () {
return view('front.pages.search');
})->name('search');