wip: on the contact pages
This commit is contained in:
parent
d31820346e
commit
20d166f2bc
16 changed files with 986 additions and 2 deletions
3
.config/psysh/psysh_history
Normal file
3
.config/psysh/psysh_history
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
Hash::make('password');
|
||||
Hash::make('alexisgrossebitemesbr');
|
||||
exit;
|
||||
211
app/Enums/ContactFormType.php
Normal file
211
app/Enums/ContactFormType.php
Normal 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 => [],
|
||||
};
|
||||
}
|
||||
}
|
||||
28
app/Http/Controllers/Front/ContactController.php
Normal file
28
app/Http/Controllers/Front/ContactController.php
Normal 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'));
|
||||
}
|
||||
}
|
||||
|
|
@ -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'
|
||||
],
|
||||
],
|
||||
];
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
],
|
||||
],
|
||||
];
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
@ -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
|
||||
|
|
|
|||
10
resources/views/components/front/inputs/checkbox.blade.php
Normal file
10
resources/views/components/front/inputs/checkbox.blade.php
Normal 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>
|
||||
|
|
@ -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>
|
||||
4
resources/views/components/front/pages/title.blade.php
Normal file
4
resources/views/components/front/pages/title.blade.php
Normal 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
|
||||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
43
resources/views/front/pages/contact/index.blade.php
Normal file
43
resources/views/front/pages/contact/index.blade.php
Normal 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
|
||||
565
resources/views/front/pages/contact/show.blade.php
Normal file
565
resources/views/front/pages/contact/show.blade.php
Normal 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
|
||||
|
|
@ -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');
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue