Skip to content
Snippets Groups Projects
Commit c47b88c9 authored by AKIFI NAIL's avatar AKIFI NAIL
Browse files

ajout des titres et des filtres pour sexes

parent d9221309
Branches
No related merge requests found
Showing
with 191 additions and 91 deletions
public/images/icon/logo_top.ico

258 KiB

......@@ -259,7 +259,7 @@ body {
position: absolute;
width: 90px;
height: 90px;
background: url("./images/fleche.png");
background: url("../images/fleche.png");
background-size: cover;
border-radius: 100vmax;
background-position: center;
......@@ -1447,4 +1447,10 @@ footer img{
.mini-menu a:hover{
color: #6D28D9;
transition: all 0.4s ease;
}
.delte_mid{
margin: auto;
display: flex;
margin-top: 1rem;
}
\ No newline at end of file
......@@ -212,4 +212,8 @@ ul{
.mb-2{
margin-bottom: 1rem;
}
.m-auto{
margin: auto;
}
\ No newline at end of file
......@@ -8,6 +8,9 @@ use App\Form\MarqueType;
use App\Repository\MarqueRepository;
use App\Form\CouleurType;
use App\Repository\CouleurRepository;
use App\Entity\Sexe;
use App\Form\SexeType;
use App\Repository\SexeRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
......@@ -46,15 +49,17 @@ class CouleurController extends AbstractController
}
#[Route('/{id}', name: 'app_couleur_show', methods: ['GET'])]
public function show(Couleur $couleur, CouleurRepository $couleurRepository, MarqueRepository $marqueRepository): Response
public function show(Couleur $couleur, CouleurRepository $couleurRepository, MarqueRepository $marqueRepository, SexeRepository $sexeRepository): Response
{
$marques = $marqueRepository->findAll();
$couleurs = $couleurRepository->findAll();
$sexe = $sexeRepository->findAll();
return $this->render('couleur/show.html.twig', [
'couleur' => $couleur,
'couleurs' => $couleurs,
'marques' => $marques
'marques' => $marques,
'sexe' => $sexe
]);
}
......
......@@ -8,6 +8,9 @@ use App\Form\CouleurType;
use App\Repository\CouleurRepository;
use App\Form\MarqueType;
use App\Repository\MarqueRepository;
use App\Entity\Sexe;
use App\Form\SexeType;
use App\Repository\SexeRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
......@@ -46,14 +49,16 @@ class MarqueController extends AbstractController
}
#[Route('/{id}', name: 'app_marque_show', methods: ['GET'])]
public function show(Marque $marque, CouleurRepository $couleurRepository, MarqueRepository $marqueRepository): Response
public function show(Marque $marque, CouleurRepository $couleurRepository, MarqueRepository $marqueRepository, SexeRepository $sexeRepository): Response
{
$couleurs = $couleurRepository->findAll();
$marques = $marqueRepository->findAll();
$sexe = $sexeRepository->findAll();
return $this->render('marque/show.html.twig', [
'marque' => $marque,
'couleurs'=> $couleurs,
'marques' => $marques
'marques' => $marques,
'sexe' => $sexe
]);
}
......
......@@ -7,6 +7,9 @@ use App\Entity\Couleur;
use App\Entity\Marque;
use App\Form\MarqueType;
use App\Repository\MarqueRepository;
use App\Entity\Sexe;
use App\Form\SexeType;
use App\Repository\SexeRepository;
use App\Form\ProduitsType;
use App\Repository\ProduitsRepository;
use App\Repository\CouleurRepository;
......@@ -20,17 +23,20 @@ use Symfony\Component\Routing\Attribute\Route;
class ProduitsController extends AbstractController
{
#[Route('/', name: 'app_produits_index', methods: ['GET'])]
public function index(ProduitsRepository $produitsRepository, CouleurRepository $couleurRepository, MarqueRepository $marqueRepository): Response
public function index(ProduitsRepository $produitsRepository, CouleurRepository $couleurRepository, MarqueRepository $marqueRepository, SexeRepository $sexeRepository): Response
{
$produits = $produitsRepository->findAll();
$couleurs = $couleurRepository->findAll();
$marques = $marqueRepository->findAll();
$sexe = $sexeRepository->findAll();
return $this->render('produits/index.html.twig', [
'produits' => $produits,
'couleurs' => $couleurs,
'marques' => $marques
'marques' => $marques,
'sexe' => $sexe,
]);
}
......@@ -42,8 +48,8 @@ class ProduitsController extends AbstractController
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
// Récupère les données téléchargées via le bouton "fichier-image"
$image = $form->get('fichier-image')->getData();
// Récupère les données téléchargées via le bouton "fichier_image"
$image = $form->get('fichier_image')->getData();
// Si un fichier a été envoyé (l'usage du bouton est facultatif)
if ($image) {
......@@ -91,7 +97,7 @@ class ProduitsController extends AbstractController
if ($form->isSubmitted() && $form->isValid()) {
$entityManager->flush();
$image = $form->get('fichier-image')->getData();
$image = $form->get('fichier_image')->getData();
if ($image) {
if (file_exists('uploads/' . $produit->getImg()))
......
<?php
namespace App\Controller;
use App\Entity\Sexe;
use App\Form\SexeType;
use App\Repository\SexeRepository;
use App\Entity\Marque;
use App\Entity\Couleur;
use App\Form\CouleurType;
use App\Repository\CouleurRepository;
use App\Form\MarqueType;
use App\Repository\MarqueRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
#[Route('/sexe')]
class SexeController extends AbstractController
{
#[Route('/', name: 'app_sexe_index', methods: ['GET'])]
public function index(SexeRepository $sexeRepository): Response
{
return $this->render('sexe/index.html.twig', [
'sexes' => $sexeRepository->findAll(),
]);
}
#[Route('/new', name: 'app_sexe_new', methods: ['GET', 'POST'])]
public function new(Request $request, EntityManagerInterface $entityManager): Response
{
$sexe = new Sexe();
$form = $this->createForm(SexeType::class, $sexe);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager->persist($sexe);
$entityManager->flush();
return $this->redirectToRoute('app_sexe_index', [], Response::HTTP_SEE_OTHER);
}
return $this->render('sexe/new.html.twig', [
'sexe' => $sexe,
'form' => $form,
]);
}
#[Route('/{id}', name: 'app_sexe_show', methods: ['GET'])]
public function show(Sexe $sexes, Marque $marque, CouleurRepository $couleurRepository, MarqueRepository $marqueRepository, SexeRepository $sexeRepository): Response
{
$couleurs = $couleurRepository->findAll();
$marques = $marqueRepository->findAll();
$sexe = $sexeRepository->findAll();
return $this->render('sexe/show.html.twig', [
'couleurs'=> $couleurs,
'marques' => $marques,
'sexes' => $sexes,
'sexe' => $sexe,
]);
}
#[Route('/{id}/edit', name: 'app_sexe_edit', methods: ['GET', 'POST'])]
public function edit(Request $request, Sexe $sexe, EntityManagerInterface $entityManager): Response
{
$form = $this->createForm(SexeType::class, $sexe);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager->flush();
return $this->redirectToRoute('app_sexe_index', [], Response::HTTP_SEE_OTHER);
}
return $this->render('sexe/edit.html.twig', [
'sexe' => $sexe,
'form' => $form,
]);
}
#[Route('/{id}', name: 'app_sexe_delete', methods: ['POST'])]
public function delete(Request $request, Sexe $sexe, EntityManagerInterface $entityManager): Response
{
if ($this->isCsrfTokenValid('delete'.$sexe->getId(), $request->request->get('_token'))) {
$entityManager->remove($sexe);
$entityManager->flush();
}
return $this->redirectToRoute('app_sexe_index', [], Response::HTTP_SEE_OTHER);
}
}
......@@ -36,7 +36,7 @@ class ProduitsType extends AbstractType
'choice_label' => 'nom',
'multiple' => 'true'
])
->add('fichier-image', FileType::class, [
->add('fichier_image', FileType::class, [
'label' => 'Photo de la chaussure',
'mapped' => false,
'required' => false,
......
<?php
namespace App\Form;
use App\Entity\Produits;
use App\Entity\Sexe;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class SexeType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('nom')
->add('produits', EntityType::class, [
'class' => Produits::class,
'choice_label' => 'id',
'multiple' => true,
])
;
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => Sexe::class,
]);
}
}
......@@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8">
<title>{% block title %}G-shoes{% endblock %}</title>
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 128 128%22><text y=%221.2em%22 font-size=%2296%22>⚫️</text><text y=%221.3em%22 x=%220.2em%22 font-size=%2276%22 fill=%22%23fff%22>sf</text></svg>">
<link rel="icon" href="{{ asset('images/icon/logo_top.ico') }}">
{% block stylesheets %}
<link rel="stylesheet" href="{{ asset('styles/utils.css') }}">
......
......@@ -3,33 +3,5 @@
{% block title %}Couleur index{% endblock %}
{% block body %}
<h1>Couleur index</h1>
<table class="table">
<thead>
<tr>
<th>Id</th>
<th>Nom</th>
<th>actions</th>
</tr>
</thead>
<tbody>
{% for couleur in couleurs %}
<tr>
<td>{{ couleur.id }}</td>
<td>{{ couleur.nom }}</td>
<td>
<a href="{{ path('app_couleur_show', {'id': couleur.id}) }}">show</a>
<a href="{{ path('app_couleur_edit', {'id': couleur.id}) }}">edit</a>
</td>
</tr>
{% else %}
<tr>
<td colspan="3">no records found</td>
</tr>
{% endfor %}
</tbody>
</table>
<a href="{{ path('app_couleur_new') }}">Create new</a>
{% endblock %}
......@@ -28,8 +28,8 @@
{% if is_granted('ROLE_ADMIN') %}
<div class="col edti">
<a href="{{ path('app_produits_show', {'id': produit.id}) }}">show</a>
<a href="{{ path('app_produits_edit', {'id': produit.id}) }}">edit</a>
<a href="{{ path('app_produits_show', {'id': produit.id}) }}"><i class="bi bi-eye"></i></a>
<a href="{{ path('app_produits_edit', {'id': produit.id}) }}"><i class="bi bi-pen"></i></a>
</div>
{% endif %}
</article>
......
{% extends 'base.html.twig' %}
{% block title %}Accueil{% endblock %}
{% block body %}
<img src="{{ asset('images/swoosh.png') }}" alt="Rwhite" class=" abs nike">
<img src="{{ asset('images/Rpurple.png') }}" alt="Rpurple" class="boul1 abs">
......
......@@ -4,6 +4,7 @@
{% block produit %}
{% for produit in marque.produits %}
<article class="row article-content ">
......@@ -28,8 +29,8 @@
{% if is_granted('ROLE_ADMIN') %}
<div class="col edti">
<a href="{{ path('app_produits_show', {'id': produit.id}) }}">show</a>
<a href="{{ path('app_produits_edit', {'id': produit.id}) }}">edit</a>
<a href="{{ path('app_produits_show', {'id': produit.id}) }}"><i class="bi bi-eye"></i></a>
<a href="{{ path('app_produits_edit', {'id': produit.id}) }}"><i class="bi bi-pen"></i></a>
</div>
{% endif %}
</article>
......
{% extends 'base.html.twig' %}
{% block title %}Confirm{% endblock %}
{% block title %}Confirmation achat{% endblock %}
{% block body %}
......
<form method="post" action="{{ path('app_produits_delete', {'id': produit.id}) }}" onsubmit="return confirm('Are you sure you want to delete this item?');">
<input type="hidden" name="_token" value="{{ csrf_token('delete' ~ produit.id) }}">
<button class="deco">Delete</button>
<button class="deco delte_mid">Delete</button>
</form>
......@@ -28,6 +28,10 @@
{{ form_label(form.stock) }}
{{ form_widget(form.stock, {'attr': {'class': 'password-input'}}) }} <!-- Classe spécifique pour le mot de passe -->
</div>
<div class="form-field">
{{ form_label(form.fichier_image) }}
{{ form_widget(form.fichier_image, {'attr': {'class': 'password-input'}}) }} <!-- Classe spécifique pour le mot de passe -->
</div>
{% if produit.img %}
......
{% extends 'base.html.twig' %}
{% block title %}Produits index{% endblock %}
{% block title %}Nos chaussure{% endblock %}
{% block body %}
{% if is_granted('ROLE_ADMIN') %}
......@@ -73,47 +73,11 @@
</article>
<article class="sexe-content">
<h3>Sexe</h3>
<div class="checkbox-wrapper">
<input id="terms-checkbox-homme" name="checkbox-homme" type="checkbox">
<label class="terms-label" for="terms-checkbox-homme">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 200 200" class="checkbox-svg">
<mask fill="white" id="path-1-inside-1_476_5-37">
<rect height="200" width="200"></rect>
</mask>
<rect mask="url(#path-1-inside-1_476_5-37)" stroke-width="40" class="checkbox-box" height="200" width="200"></rect>
<path stroke-width="15" d="M52 111.018L76.9867 136L149 64" class="checkbox-tick"></path>
</svg>
<span class="label-text">Homme</span>
</label>
</div>
<div class="checkbox-wrapper">
<input id="terms-checkbox-femme" name="checkbox-femme" type="checkbox">
<label class="terms-label" for="terms-checkbox-femme">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 200 200" class="checkbox-svg">
<mask fill="white" id="path-1-inside-1_476_5-37">
<rect height="200" width="200"></rect>
</mask>
<rect mask="url(#path-1-inside-1_476_5-37)" stroke-width="40" class="checkbox-box" height="200" width="200"></rect>
<path stroke-width="15" d="M52 111.018L76.9867 136L149 64" class="checkbox-tick"></path>
</svg>
<span class="label-text">Femme</span>
</label>
</div>
<div class="checkbox-wrapper">
<input id="terms-checkbox-enfant" name="checkbox-enfant" type="checkbox">
<label class="terms-label" for="terms-checkbox-enfant">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 200 200" class="checkbox-svg">
<mask fill="white" id="path-1-inside-1_476_5-37">
<rect height="200" width="200"></rect>
</mask>
<rect mask="url(#path-1-inside-1_476_5-37)" stroke-width="40" class="checkbox-box" height="200" width="200"></rect>
<path stroke-width="15" d="M52 111.018L76.9867 136L149 64" class="checkbox-tick"></path>
</svg>
<span class="label-text">Enfant</span>
</label>
</div>
<ul class="list-marque">
{% for sexes in sexe %}
<li><a href="{{ path('app_sexe_show', {'id': sexes.id}) }}"> {{ sexes.nom }}</a></li>
{% endfor %}
</ul>
</article>
</aside>
<section class="row gap-big jc-c warp shopbase">
......
{% extends 'base.html.twig' %}
{% block title %}Edit Produits{% endblock %}
{% block title %}Edition Produits{% endblock %}
{% block body %}
<h1 class="text-c mt-4">Edition du produit</h1>
......
{% extends 'produits/baseproduit.html.twig' %}
{% block title %}Nos Chaussure{% endblock %}
{% block produit %}
{% for produit in produits %}
......@@ -28,8 +32,8 @@
{% if is_granted('ROLE_ADMIN') %}
<div class="col edti">
<a href="{{ path('app_produits_show', {'id': produit.id}) }}">show</a>
<a href="{{ path('app_produits_edit', {'id': produit.id}) }}">edit</a>
<a href="{{ path('app_produits_show', {'id': produit.id}) }}"><i class="bi bi-eye"></i></a>
<a href="{{ path('app_produits_edit', {'id': produit.id}) }}"><i class="bi bi-pen"></i></a>
</div>
{% endif %}
</article>
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment