templates/shop/new.html.twig line 1
{% extends 'base2.html.twig' %}
{% block title %}New Shop{% endblock %}
{% block body %}
{{ form_start(form, {'attr': {'novalidate': 'novalidate'}}) }}
{# Début de mon formulaire #}
<div
class="dark:bg-background lg:ml-42 ml-0 mt-0 min-h-[calc(100vh-80px)] p-7"
>
<section class="dark:bg-background">
<div class="container mx-auto">
{# templates/author/validation.html.twig #}
{# DEBUT partie création du compte utilisateur #}
<div class="bg-white shadow-front-2 dark:bg-foreground rounded-lg p-6 mb-7">
<h4 class="text-gray-700 dark:text-gray-300 text-xl font-semibold mb-7">
Création du compte utilisateur
</h4>
<div class="grid lg:grid-cols-2 grid-cols-1 gap-7">
{# DEBUT champ Prénom #}
<div class="lg:col-span-1 col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.users.firstName) }}
</div>
{{ form_widget(form.users.firstName) }}
<div class="text-red-500 text-xs italic">
{{ form_errors(form.users.firstName) }}
</div>
</div>
{# DEBUT champ Nom #}
<div class="lg:col-span-1 col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.users.lastName) }}
</div>
{{ form_widget(form.users.lastName) }}
<div class="text-red-500 text-xs italic">
{{ form_errors(form.users.lastName) }}
</div>
</div>
{# DEBUT champ email #}
<div class="lg:col-span-1 col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.users.email) }}
</div>
{{ form_widget(form.users.email) }}
<div class="text-red-500 text-xs italic">
{{ form_errors(form.users.email) }}
</div>
</div>
{# DEBUT champ téléphone #}
<div class="lg:col-span-1 col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.users.phoneNumber) }}
</div>
{{ form_widget(form.users.phoneNumber) }}
<div class="text-red-500 text-xs italic">
{{ form_errors(form.users.phoneNumber) }}
</div>
</div>
{# DEBUT champ password #}
<div class="lg:col-span-1 col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.users.password) }}
</div>
{{ form_widget(form.users.password) }}
<div class="text-red-500 text-xs italic">
{{ form_errors(form.users.password) }}
</div>
</div>
{# DEBUT champ password_confirmed #}
<div class="lg:col-span-1 col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.users.password_confirmed) }}
</div>
{{ form_widget(form.users.password_confirmed) }}
<div class="text-red-500 text-xs italic">
{{ form_errors(form.users.password_confirmed) }}
</div>
</div>
</div>
</div>
{# FIN partie création du compte utilisateur #}
{# DEBUT partie informations générales #}
<div class="bg-white shadow-front-2 dark:bg-foreground rounded-lg p-6 mb-7">
<h4 class="text-gray-700 dark:text-gray-300 text-xl font-semibold mb-7">
Informations de base
</h4>
<div class="grid lg:grid-cols-2 grid-cols-1 gap-7">
{# DEBUT champ myBusiness #}
<div class="col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.myBusiness) }}
</div>
{{ form_widget(form.myBusiness, {'id': 'myBusinessField'}) }}
<p class='cursor-pointer text-sm italic text-gray-700 dark:text-gray-400 mb-4'>
Cet information permet de renseigner automatiquement certains champs et affiche vos horaires d'ouverture sur votre fiche. </br>
Pour récupérer votre ID Google My Business : <a href='https://www.google.fr/' target="_blank" class='text-sky-500'> cliquez ici ← </a>
</p>
<div class="text-red-500 text-xs italic">
{{ form_errors(form.myBusiness) }}
</div>
</div>
{# DEBUT champ nom #}
<div id="shopName" class="col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.name) }}
</div>
{{ form_widget(form.name) }}
<div class="text-red-500 text-xs italic">
{{ form_errors(form.name) }}
</div>
</div>
{# DEBUT champ sous-titre #}
<div class="col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.subtitle) }}
</div>
{{ form_widget(form.subtitle) }}
<p class='cursor-pointer text-sm italic text-gray-700 dark:text-gray-400 mb-4'>
Le sous-titre doit comporter entre 10 et 90 caractères.
<span id="subtitle-character-color">
<span id="subtitle-character-count">0</span> caractères
</span>
</p>
<div class="text-red-500 text-xs italic">
{{ form_errors(form.subtitle) }}
</div>
</div>
{# DEBUT champ email #}
<div class="lg:col-span-1 col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.email) }}
</div>
{{ form_widget(form.email) }}
<div class="text-red-500 text-xs italic">
{{ form_errors(form.email) }}
</div>
</div>
{# DEBUT champ téléphone #}
<div id="shopPhone" class="lg:col-span-1 col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.phoneNumber) }}
</div>
{{ form_widget(form.phoneNumber) }}
<div class="text-red-500 text-xs italic">
{{ form_errors(form.phoneNumber) }}
</div>
</div>
</div>
</div>
{# FIN partie informations générales #}
{# DEBUT partie localisation du commerce #}
<div id="shopLocation" class="bg-white shadow-front-2 dark:bg-foreground rounded-lg p-6 mb-7">
<h4 class="text-gray-700 dark:text-gray-300 text-xl font-semibold mb-7">
Localiser votre commerce
</h4>
<div class="grid lg:grid-cols-2 grid-cols-1 gap-7">
<div class="col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.adressStreet) }}
</div>
{{ form_widget(form.adressStreet) }}
<div class="text-red-500 text-xs italic">
{{ form_errors(form.adressStreet) }}
</div>
</div>
<div class="col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.adressStreet2) }}
</div>
{{ form_widget(form.adressStreet2) }}
<div class="text-red-500 text-xs italic">
</div>
</div>
<div class="lg:col-span-1 col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.addressPostalCode) }}
</div>
{{ form_widget(form.addressPostalCode) }}
<div class="text-red-500 text-xs italic">
{{ form_errors(form.addressPostalCode) }}
</div>
</div>
<div class="lg:col-span-1 col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.addressCity) }}
</div>
{{ form_widget(form.addressCity) }}
<div class="text-red-500 text-xs italic">
{{ form_errors(form.addressCity) }}
</div>
</div>
<div class="lg:col-span-1 col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.latitude) }}
</div>
{{ form_widget(form.latitude) }}
<p class='cursor-pointer text-sm italic text-gray-700 dark:text-gray-400 mb-4'>
Pour obtenir les coordonnées GPS de votre adresse : <a href='https://www.coordonnees-gps.fr/' target="_blank" class='text-sky-500'> cliquez ici ← </a>
</p>
<div class="text-red-500 text-xs italic">
{{ form_errors(form.latitude) }}
</div>
</div>
<div class="lg:col-span-1 col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.longitude) }}
</div>
{{ form_widget(form.longitude) }}
<p class='cursor-pointer text-sm italic text-gray-700 dark:text-gray-400 mb-4'>
Pour obtenir les coordonnées GPS de votre adresse : <a href='https://www.coordonnees-gps.fr/' target="_blank" class='text-sky-500'> cliquez ici ← </a>
</p>
<div class="text-red-500 text-xs italic">
{{ form_errors(form.longitude) }}
</div>
</div>
</div>
</div>
{# FIN partie localisation du commerce #}
{# DEBUT partie à propos du commerce #}
<div class="bg-white shadow-front-2 dark:bg-foreground rounded-lg p-6 mb-7">
<h4 class="text-gray-700 dark:text-gray-300 text-xl font-semibold mb-7">
Les détails de votre commerce
</h4>
<div class="grid lg:grid-cols-2 grid-cols-1 gap-7">
<div class="col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.about) }}
</div>
{{ form_widget(form.about) }}
<p class='cursor-pointer text-sm italic text-gray-700 dark:text-gray-400 mb-4'>
Votre texte de description peut comporter 1000 caractères maximum.
<span id="about-character-color">
<span id="character-count">0</span> caractères
</span>
</p>
<div class="text-red-500 text-xs italic">
{{ form_errors(form.about) }}
</div>
</div>
<div class="lg:col-span-1 col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.facebook) }}
</div>
{{ form_widget(form.facebook) }}
<div class="text-red-500 text-xs italic">
{{ form_errors(form.facebook) }}
</div>
</div>
<div class="lg:col-span-1 col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.twitter) }}
</div>
{{ form_widget(form.twitter) }}
<div class="text-red-500 text-xs italic">
{{ form_errors(form.twitter) }}
</div>
</div>
<div class="lg:col-span-1 col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.linkedin) }}
</div>
{{ form_widget(form.linkedin) }}
<div class="text-red-500 text-xs italic">
{{ form_errors(form.linkedin) }}
</div>
</div>
<div class="lg:col-span-1 col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.instagram) }}
</div>
{{ form_widget(form.instagram) }}
<div class="text-red-500 text-xs italic">
{{ form_errors(form.instagram) }}
</div>
</div>
<div id="shopWebsite" class="lg:col-span-1 col-span-2">
{{ form_row(form.website) }}
</div>
</div>
</div>
{# FIN partie à propos du commerce #}
{# DEBUT partie photos du commerce #}
<div class="bg-white shadow-front-2 dark:bg-foreground rounded-lg p-6 mb-7">
<h4 class="text-gray-700 dark:text-gray-300 text-xl font-semibold mb-7">
Les photos de votre commerce
</h4>
<div class="grid lg:grid-cols-2 grid-cols-1 gap-7">
<div class="lg:col-span-1 col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.picture1) }}
</div>
{{ form_widget(form.picture1) }}
<div class="text-red-500 text-xs italic">
{{ form_errors(form.picture1) }}
</div>
</div>
<div class="lg:col-span-1 col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.picture2) }}
</div>
{{ form_widget(form.picture2) }}
<div class="text-red-500 text-xs italic">
{{ form_errors(form.picture2) }}
</div>
</div>
<div class="lg:col-span-1 col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.picture3) }}
</div>
{{ form_widget(form.picture3) }}
<div class="text-red-500 text-xs italic">
{{ form_errors(form.picture3) }}
</div>
</div>
<div class="lg:col-span-1 col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.picture4) }}
</div>
{{ form_widget(form.picture4) }}
<div class="text-red-500 text-xs italic">
{{ form_errors(form.picture4) }}
</div>
</div>
<div class="lg:col-span-1 col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.picture5) }}
</div>
{{ form_widget(form.picture5) }}
<div class="text-red-500 text-xs italic">
{{ form_errors(form.picture5) }}
</div>
</div>
<div class="lg:col-span-1 col-span-2">
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.picture6) }}
</div>
{{ form_widget(form.picture6) }}
<div class="text-red-500 text-xs italic">
{{ form_errors(form.picture6) }}
</div>
</div>
</div>
</div>
{# FIN partie photos du commerce #}
{# DEBUT partie categories #}
<div class="bg-white shadow-front-2 dark:bg-foreground rounded-lg p-6 mb-7">
<div class="flex justify-between items-center mb-7">
<h4 class="text-gray-700 dark:text-gray-300 text-xl font-semibold">
Catégories du commerce
</h4>
</div>
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.categories) }}
</div>
{{ form_widget(form.categories) }}
<div class="text-red-500 text-xs italic">
{{ form_errors(form.categories) }}
</div>
</div>
{# FIN partie categories #}
{# DEBUT partie tags #}
<div class="bg-white shadow-front-2 dark:bg-foreground rounded-lg p-6 mb-7">
<div class="flex justify-between items-center mb-7">
<h4 class="text-gray-700 dark:text-gray-300 text-xl font-semibold">
Petits plus du commerce
</h4>
</div>
<div class='text-base text-gray-700 dark:text-gray-200 block mb-3'>
{{ form_label(form.tags) }}
</div>
{{ form_widget(form.tags) }}
<div class="text-red-500 text-xs italic">
{{ form_errors(form.tags) }}
</div>
</div>
{# FIN partie tags #}
{# DEBUT partie informations cachées #}
<div class="hidden">
<div class="flex justify-between items-center mb-7">
<h4 class="text-gray-700 dark:text-gray-300 text-xl font-semibold">
Hidden info
</h4>
</div>
<div class="lg:col-span-1 col-span-2">
{{ form_row(form.available) }}
</div>
<div class="lg:col-span-1 col-span-2">
{{ form_row(form.verified) }}
</div>
<div class="lg:col-span-1 col-span-2">
{{ form_row(form.createdAt) }}
</div>
<div class="lg:col-span-1 col-span-2">
{{ form_row(form.users.roles) }}
</div>
<div class="lg:col-span-1 col-span-2">
{{ form_row(form.users.picture) }}
</div>
<div class="lg:col-span-1 col-span-2">
{{ form_row(form.users.about) }}
</div>
</div>
{# FIN partie informations cachées #}
{# DEBUT mention légale #}
<div class="bg-white shadow-front-2 dark:bg-foreground rounded-lg p-6 mb-7">
<div class="flex items-center mb-7">
{{ form_widget(form.legalCheck) }}
<label for="legalCheck" class="text-gray-700 dark:text-gray-300 text-base font-semibold ml-3">
J'ai pris connaissance des
<a class="underline text-blue-500" href="#">conditions générales d'utilisation</a>
du site et des
<a class="underline text-blue-500" href="#">mentions légales</a>
<div class="text-red-500 text-xs italic">
{{ form_errors(form.legalCheck) }}
</div>
</label>
</div>
</div>
{# FIN mention légale #}
{# DEBUT submit #}
<div class="flex flex-wrap sm:justify-start justify-center">
{{ form_row(form.submit) }}
</div>
{# FIN submit #}
</div>
</section>
</div>
{# FIN de mon formulaire #}
{{ form_end(form) }}
<script>
// Sélectionner le champ "myBusiness"
var myBusinessField = document.getElementById('myBusinessField');
// Sélectionner les champs "name" et "shopLocation"
var nameField = document.getElementById('shopName');
var shopLocationField = document.getElementById('shopLocation');
var shopPhoneField = document.getElementById('shopPhone');
var shopWebsiteField = document.getElementById('shopWebsite');
// Fonction pour masquer ou afficher les champs "name" et "shopLocation" en fonction de la valeur de "myBusiness"
function toggleFields() {
if (myBusinessField.value !== '') {
//nameField.classList.add('hidden'); // Masquer le champ "name"
shopLocationField.classList.add('hidden'); // Masquer le champ "shopLocation"
shopPhoneField.classList.add('hidden'); // Masquer le champ "shopLocation"
shopWebsiteField.classList.add('hidden'); // Masquer le champ "shopLocation"
} else {
//nameField.classList.remove('hidden'); // Afficher le champ "name"
shopPhoneField.classList.remove('hidden'); // Afficher le champ "shopLocation"
shopLocationField.classList.remove('hidden'); // Masquer le champ "shopLocation"
shopWebsiteField.classList.remove('hidden'); // Masquer le champ "shopLocation"
}
}
// Appeler la fonction une première fois au chargement de la page
toggleFields();
// Ajouter un écouteur d'événement pour détecter les changements de valeur dans "myBusiness"
myBusinessField.addEventListener('input', toggleFields);
</script>
{% endblock %}