Quantcast
Channel: Grafikart | Derniers Sujets du forum
Viewing all 1542 articles
Browse latest View live

Deploiement symfony 4, problème base de données

$
0
0

Bonjour,

Je suis connecté en ssh sur mon hébergement. J'ai déployé mon projet Symfony 4 dessus.
Ensuite il faudrait mettre en place la base de données non ?

Donc je fais :

$ php bin/console doctrine:database:create

Voici l'erreur affichée :

$ php bin/console doctrine:database:create
Could not create database `blog` for connection named default
An exception occurred while executing 'CREATE DATABASE `blog':

SQLSTATE[42000]: Syntax error or access violation: 1044 Access denied for user 'jack'@'localhost' to database 'blog'

Quelqu'un saurait le pourquoi ? Merci d'avance


Afficher un formulaire sans passer ID dans l'URL

$
0
0

Bonjour,

Voila je souhaite faire quelque chose pour améliorer la sécurité de mon code.
Je réalise un petit outil pour que les écoles de mon village puissent gérer les cours en ligne et garder un contact avec leurs élèves.
Pour ce faire, j'ai :

une entity Users qui contient :

  • id
  • firstname
  • ...

Une entity Schools, qui contient :

  • id
  • name
  • ...
  • director (relation OneToOne avec l'entité Users)

Ce que je veux

Je souhaite que le directeur connecté puisse visualiser / modifier le profil de son école (il s'agit d'un formulaire)
exemple de lien : director/school-profil

Mais que celui-ci ne puisse valider que le profil de son école et pas d'une autre. C'est pourquoi je veux éviter de faire passer l'ID de l'école concernée dans l'URL (ex. : director/school-profil/3)

Ce que je fais

Dans mon Controller :

/**
     * @Route("/school-profile", name="schoolprofile")
     */
    public function schoolprofile(Request $request, SchoolsRepository $schoolRepo, EntityManagerInterface $manager){

        // On récupère l'ID de l'user connecté
        $recupuser = $this->getUser();

        // On cherche à filtrer l'école concernée
        $schoolRepo->findOneBy([
            'director' => $recupuser
        ]); 

        // On traite le formulaire
        $form = $this->createForm(SchoolType::class);
        $form->handleRequest($request);

        if($form->isSubmitted() && $form->isValid()) {
            $manager->persist($form);
            $manager->flush();
        }

        return $this->render('director/school_profile.html.twig', [
        'schoolForm' => $form->createView()
        ]);
    }

Ce que j'obtiens

Aucune page d'erreur. J'ai bien la page contenant le formulaire, mais celui-ci est vide.

Merci par avance pour votre aide,

Grub

Connaître la dernière connexion d'un User

$
0
0

Hello !

Je voudrais savoir si il existe quelque chose dans Symfony qui me permette de connaître la dernière fois qu'un utilisateur s'est connecté ?

Sinon est-ce que je peux lors du LogIn update un setLastConnexion() en BDD sur ce User ?

Cela me servira dans le côté Admin de savoir la dernière connexion d'un User en particulier.

Merci de votre aide ;)

Bonne journée !
S2LF

[Symfony 4] Formulaire complexe

$
0
0

Bonjour les amis

Voila j'ai 3 entités

Une entité Dialecte

Une entité Exercice

Une entité ExerciceDialecte

il y'a une relation ManyToOne entre ExerciceDialecte et Dialecte par propiété $dialecte dans (ExerciceDialecte)

cette propriété est invérsé par la propriété $exerciceDialectes dans (Dialecte)

il y'a une relation ManyToOne entre ExerciceDialecte et Exercice par propiété $dialecte dans (ExerciceDialecte)

cette propriété est invérsé par la propriété $exerciceDialectes dans (Exercice)

Donc maintenant je souhaite que lorsque je crée un Exercice je puisse créer le l'entrée ExerciceDialecte qui correponds

Et donc dans ExerciceType, j'ai ajouté le champ $exerciceDialectes

Problème c'est que dans ma vue, quand je demande l'affichage du formulaire, je ne vois pas les champs qui sont lié au ExerciceDialecteType

Comment puis-je faire pour enregistrer les deux à formulaire à la fois ?

Voici mon code :

{{ form_row(exercice_form.exerciceDialectes, {'label': "Exercice Dialecte", 'attr': {'class': 'form-controle'}}) }}

class ExerciceDialecteType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
         ->add('exercice', EntityType::class,
                [
                    'class' => Exercice::class,
                    'choice_label' => 'id'
                ])
         ->add('dialecte', EntityType::class,
                [
                    'class' => Dialecte::class,
                    'choice_label' => 'id'
                ])
         ->add('exerciceBase', EntityType::class,
                [
                    'class' => ExerciceBase::class,
                    'choice_label' => 'id'
                ])
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => ExerciceDialecte::class,
        ]);
    }
}
class ExerciceType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('category', EntityType::class,
                [
                    'class' => CategoryExercice::class,
                    'choice_label' => 'nom',
                    'label' => false
                ]
            )           
            ->add('exerciceDialectes', CollectionType::class, array(
                'entry_type' => ExerciceDialecteType::class,
                'label' => false,
                'allow_add' => true,
                'by_reference' => false,
                'allow_delete' => true,
            ))

            ->add('niveau', EntityType::class,
                [
                    'class' => Niveau::class,
                    'choice_label' => 'nomNiveau',
                    'label' => false
                ]
            )
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => Exercice::class,
        ]);
    }
}

Structure Symfony 5 déploiement git

$
0
0

Présentation

Bonjour,

Pour le déploiement d'un site sous Symfony 5, chez Gandi.net,
J'essaye de rendre le déploiement par git stable, vu que Gandi possède le gestionnaire de dépendances que l'on aime tant : Composer

Les requirements pour ce déploiement sont les suivants :
* Serveur Php
* projet dans un répertoire "../site-url.org/htdocs"

Jusqu'ici tout va bien.

Les problèmes

J'ai donc déplacé entièrement mes fichiers dans un dossier htdocs/ à la racine de mon répository/projet.
Il me suffit ensuite d'executer une commande pour que mon repo soit récupéré sur mon serveur et que les dépendances y soit téléchargées.

Lors du déploiement j'ai rencontré ces messages.. :

-----> Starting new deployment (*xxxxxx*.org - master)
-----> Fetching application code
-----> Building new application
ERROR: composer.json and composer.lock files should be placed outside the htdocs directory (../htdocs/)
Dependencies could not be installed. Exiting...
Please refer to the documentation:

[fr] https://docs.gandi.net/fr/simple_hosting/langages/php.html#gestion-des-dependances
[en] https://docs.gandi.net/en/simple_hosting/instance_languages/php.html#dependency-management
-----> Building new application failed
-----> Aborting deployment

J'ai donc alors déplacer, composer.json et composer.lock (uniquement) et retenté l'opération, qui comme je m'y attendais a rendu le même résultat.

Conclusion

J'en conclu donc qu'il me faut revoir l'architecture de mon projet symfony pour y séparer les fichiers de dépendances et les fichiers de l'application.
( J'ai bien évidemment lu plusieur fois le fameux lien dans le message d'erreur Celui-ci )
Après moultes essais, j'en suis toujours au même constat avec Symfony, dès que l'on touche à la structure, c'est complexe.

Je viens vers vous donc pour savoir si quelqu'un a déjà eu a faire à cela et/ou si quelqu'un peut m'éclaircir la route.

Cordialement et Merci d'avance,
Moi-même

Donner le rôle admin à un User

$
0
0

Hello !

Connecté en tant qu'Admin et dans un espace admin,

je souhaiterais attribuer le rôle administrateur à un User.

J'ai donc un bouton sur lequel je click, si le User est admin sa lui enlève l'Admin si il ne l'es pas il le devient !

    /**
     * @Route("/admin/user/grade/{id}", name="grade_admin")
     */
     public function grade_admin(User $user, EntityManagerInterface $em)
     {

        if($user->getRoles(['ROLE_ADMIN'])){
            $user->setRoles([]);
            $em->flush();
        } elseif{
            $user->setRoles(["ROLE_ADMIN"]);
            $em->flush();
        }

        $this->addFlash('success', "La modification a bien été pris en compte");
        return $this->redirectToRoute('admin_users');
     }

Mais il se trouve que je peux enlever le role Admin sans soucis, mais pas l'attribuer.
Je pense que Symfony me bloque par sécurité.

J'avais déjà eu le cas avec le changement de mot de passe, mais en passant par un form je n'avais plus eu de problème.
Auriez-vous une idée ou une solution ?

Merci beaucoup !
S2LF

Procédure stockée avec Sf / Doctrine

$
0
0

bonjour,

je réalise actuellement un site avec comme coeur de fonctionnement un champ de géolocalisation etc
je ne souhaite pas mettre le calcul de distance directement dans le repo mais plutôt en procédure stockée.

c´est la première fois que j´utilise cela avec doctrine donc je me demande s´il existe une solution pour la création de la fonction de procédure stockée dans mysql autre que de passer par phpmyadmin biensur. par exemple un make ou autre etc
je ne demande pas comment utiliser la fonction mais bien comment la créer autre que par phpmyadmin.
quelle est la bonne pratique sous sf5 ? il y a t´il un schema genre fichier dans sf pour ecrire la fonction ou rien du tout c´est juste par phpmyadmin ?

je vous remercie j´espère que je suis clair dans ma demande.

SF5 - Récupérer liste des users de mon école

$
0
0

Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je veux

J'ai une entité : Users qui contient la liste de mes utilisateurs
J'ai une entité : Schools qui contient la liste des coles de mon village
J'ai une relation entre les deux en ManyToMany avec la table générée automatiquement : users_schools

Côté Directeur, je veux que celui-ci puisse lister la liste des utilisateurs qui se trouvent dans son école

Ce que je fais

La méthode dans mon controller Director

/**
    * @Route("/prof-list", name="professor_list")
    */
   public function listprof(UsersRepository $usersRepo, SchoolsRepository $schoolRepo) {

       // On récupère l'ID de l'user connecté
       $recupuserid = $this->getUser()->getId();

       // On cherche à filtrer l'école concernée
       $school = $schoolRepo->findOneBy([
           'director' => $recupuserid
       ]);

       // On récupère l'ID de l'école concernée
       $B = $school->getId();

       // On requête sur l'entité user
       $QB = $usersRepo->createQueryBuilder('u')
       ->where('u.schools = :schools')
       ->setParameter('schools', $B);

       $result = $QB->getQuery()->getResult();

       return $this->render('director/proflist.html.twig', [
           'users' => $result
       ]);
   }

Ma vue TWIG

{% extends 'base.html.twig' %}
{% block body %}
    <h1 class="h3 mb-4 text-gray-800">Liste des professeurs de votre école</h1>
    <div class="card mb-12">
        <div class="card-header"></div>
        <div class="card-body">
            <div class="table-responsive">
                <table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">
                  <thead>
                    <tr>
                      <th>#</th>
                      <th>Nom</th>
                      <th>Prénom</th>
                      <th>Edition</th>
                    </tr>
                  </thead>
                  <tfoot>
                    <tr>
                    <th>#</th>
                    <th>Nom</th>
                    <th>Prénom</th>
                    <th>Edition</th>
                    </tr>
                  </tfoot>
                  <tbody>
                    {% for user in users %}
                    <tr>
                        <td>{{ user.id }}</td>
                        <td>{{ user.lastname }}</td>
                        <td>{{ user.firstname }}</td>
                        <td>EDIT</td>
                    </tr>  
                    {% endfor %}
                  </tbody>
                </table>
              </div>
        </div>
    </div>
{% endblock %}

Ce que j'obtiens

Une belle erreur que je ne comprends pas !
Texte alternatif

Merci par avance pour votre aide :)

Grub


Aligner horizontalement 4 blocs image + texte

$
0
0

Bonjour,

J'ai un peu plus de 70 ans et je souhaite prndre ma retraite et mettre à jour une partie d'une page d'accueil en Symfony et j'ai oublié plein de choses, désolé.

Ce que je fais

J'ai fait un tableau ( 4 modules avec texte ) qui fonctionne bien en desktop mais dans un mobile le tableau est comprimé horizontalement au lieu de s'éclater module par module en vertical, donc les modules les uns en-dessous des autres

Entourez votre c    <table>
                        <caption><span class="strongvert">Augmentation du permis des Gorilles de 750$ à 1500$ par personne du 1 Juin 2017, demandez-moi pour Ouganda</span></caption>
                        <tr class="en_tete">
                        <th><img src="{{ asset('/img/photo_1.jpg') }}" title="Voyage safari Gorilles sings chimpanzés Rwanda Ouganda Congo" alt="Voyage safari Gorilles sings chimpanzés Rwanda Ouganda Congo" /></th>
                        <th><img src="{{ asset('/img/photo_2.jpg') }}" title="Voyage safari Gorilles sings chimpanzés Rwanda Ouganda Congo" alt="Voyage safari Gorilles sings chimpanzés Rwanda Ouganda Congo" /></th>
                        <th><img src="{{ asset('/img/photo_3.jpg') }}" title="Voyage safari Gorilles sings chimpanzés Rwanda Ouganda Congo" alt="Voyage safari Gorilles sings chimpanzés Rwanda Ouganda Congo" /></th>
                        <th><img src="{{ asset('/img/photo_4.jpg') }}" title="Voyage safari Gorilles sings chimpanzés Rwanda Ouganda Congo" alt="Voyage safari Gorilles sings chimpanzés Rwanda Ouganda Congo" /></th>
                        </tr>
                        <tr>
                            <td><span class="strongvert">Gorilles et lac Kivu 3 jours</span><br />Environ 300 Km sur pistes et routes du Rwanda à bord de véhicules confortables, 2 nuits en hôtels de bon standard. Repas froid à midi, chaud et varié le soir. 
                        Votre guide sera francophone et expérimenté. Le climat de type équatorial chaud 25 à 30°. Nuits fraîches en altitude...</td>
                            <td><span class="strongvert">Gorilles et lac Kivu 4 jours</span><br />Environ 400 Km sur pistes et routes du Rwanda à bord de véhicules confortables, 3 nuits en hôtels soit luxueux ou en guesthouses de bon confort. Repas froids à midi, chauds 
                        et variés le soir. Votre guide francophone et expérimenté Climat équatorial chaud 25 à 30° Nuits fraîches en altitude..</th>
                            <td><span class="strongvert">Gorilles pas cher en 4 jours</span><br />Rwanda, Gorilles en 4 jours pas cher, descriptif identique au circuit de 4 jours précédent sauf pas de lac Kivu. Les 1ères lueurs de l’aube déchirent les pans 
                        de brume accrochés aux sommets du Karisimbi Sabynio etc. Géants endormis aux pentes envahies par une végétation luxuriante...</td>
                            <td><span class="strongvert">Gorilles primates, lacs 8 jrs</span><br />Ce safari vous fera découvrir les plus remarquables lieux du Rwanda avec la végétation luxuriante, Foret de Nyungwe les groupes de colobes, le lac Kivu 
                        et ses centaines d’îles et la rencontre avec les gorilles de montagne seront très forts et rares, vous serez un privilégié !</td>
                        </tr>
                </table>
ode pour bien le mettre en forme

Ce que je veux

En mode Desktop, c'est bon, mon souci c'est sur mobile ou smartphone car le tableau est alors comprimé horizontalement comme un accordéon au lieu de se mettre module sous chaque module en vertical, donc bien lisible en smartphone.

Ce que j'obtiens

Le tout est bien responsive, mais sur un smartphone, c'est tellement serré que c'est presque illisible

importation de donnée pour les gérer en ORM

$
0
0

Bonjour,

Voila je rencontre un petit problème, je sais si c'est le bon theme ^_^ "MySQL/Symfony" .
mon maitre d'apprentissage ma demander de faire un script pour recuperer des Données d'utilisateurs d'une base de donnée PostGres pour les inserer dans mon projet Symfony 4 sous MySQL. mon projet est gerer par entites, et l'entite Usr a un champs mot de passe qui est instancier par encodage aragon2i.

j'arrive a faire un import des données avec un fichier sql d'insert en Mysql.

je cherchez à faire :

  • trouver un moyens d'importer les données et les formater pour L'ORM doctrine (soit avant l' export/ ou apres )
  • de creer un script permettant d'automatiser cette procedure ( et de creer une sorte d'update).

Merci bien d'avance de vos conseils,
B.S.

[Symfony 4] Formulaire complexe

$
0
0

Bonjour les amis

Voila j'ai 3 entités

Une entité Dialecte

Une entité Exercice

Une entité ExerciceDialecte

il y'a une relation ManyToOne entre ExerciceDialecte et Dialecte par propiété $dialecte dans (ExerciceDialecte)

cette propriété est invérsé par la propriété $exerciceDialectes dans (Dialecte)

il y'a une relation ManyToOne entre ExerciceDialecte et Exercice par propiété $dialecte dans (ExerciceDialecte)

cette propriété est invérsé par la propriété $exerciceDialectes dans (Exercice)

Donc maintenant je souhaite que lorsque je crée un Exercice je puisse créer le l'entrée ExerciceDialecte qui correponds

Et donc dans ExerciceType, j'ai ajouté le champ $exerciceDialectes

Problème c'est que dans ma vue, quand je demande l'affichage du formulaire, je ne vois pas les champs qui sont lié au ExerciceDialecteType

Comment puis-je faire pour enregistrer les deux à formulaire à la fois ?

Voici mon code :

{{ form_row(exercice_form.exerciceDialectes, {'label': "Exercice Dialecte", 'attr': {'class': 'form-controle'}}) }}

class ExerciceDialecteType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
         ->add('exercice', EntityType::class,
                [
                    'class' => Exercice::class,
                    'choice_label' => 'id'
                ])
         ->add('dialecte', EntityType::class,
                [
                    'class' => Dialecte::class,
                    'choice_label' => 'id'
                ])
         ->add('exerciceBase', EntityType::class,
                [
                    'class' => ExerciceBase::class,
                    'choice_label' => 'id'
                ])
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => ExerciceDialecte::class,
        ]);
    }
}
class ExerciceType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('category', EntityType::class,
                [
                    'class' => CategoryExercice::class,
                    'choice_label' => 'nom',
                    'label' => false
                ]
            )           
            ->add('exerciceDialectes', CollectionType::class, array(
                'entry_type' => ExerciceDialecteType::class,
                'label' => false,
                'allow_add' => true,
                'by_reference' => false,
                'allow_delete' => true,
            ))

            ->add('niveau', EntityType::class,
                [
                    'class' => Niveau::class,
                    'choice_label' => 'nomNiveau',
                    'label' => false
                ]
            )
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => Exercice::class,
        ]);
    }
}

[Symfony 4] Gestion des rôles

$
0
0

Salut les amis,

Je suis en train de mettre en place la gestion des rôles dans un projet Symfony.

Mais j'ai une question toutes bête.

Dans le fichier securty.yaml, au moment où je déclare la hierarchie des rôles, est-ce que si pour le role ROLE_SUPER_ADMIN, je lui met en héritage le role ROLE_ALLOWED_TO_SWITCH

Est-ce que le role ROLE_SUPER_ADMIN a tous les rôles déclarés ou est-ce que je suis obligé de déclaré rôle par rôle les rôles qu'il a ?

commande php bin/console server:run ne fonctionne pas

$
0
0

Bonjour,

j'ai clôné en provenance du serveur de test mon projet symfony 4 appelé nomduprojet, ensuite en essayant de lancer le server

$ cd nomduprojet
$ php bin/console server:run

j'obtiens l'erreur

$ php bin/console server:runPHP Warning: require(nomduprojet/vendor/autoload.php): failed to open stream: No such file or directory in nomduprojet/bin/console on line 15aroundPHP Fatal error: require(): Failed opening required 'nomduprojet/vendor/autoload.php' (include_path='.:/usr/share/pear:/usr/share/php') in nomduprojet/bin/console on line 15

Plusieurs questions que je me pose :

1- Le fichier bin/console ne fonctionne pas pareil d'un environnement à l'autre ? (ici le projet clôné provient de l'environnement de test que j'essai de faire fonctionner en local)

2- Dans mon cas, quand on clone un projet symfony, dans la pratique quels sont les fichiers qu'il faut nécessairement créér ou modifier pour pouvoir le faire fonctionner en local ?

Merci d'avance à ceux qui prennent lle temps de me lire et de me répondre, en tant que débutant, j'essaie de comprendre comment ça fonctionne :)

Gestion des roles peu commune

$
0
0

Bonjour,

Je viens donc demander un avis, je suis entrain débuter un projet sur Symfony.
Par défaut, Symfony à une gestion des rôles assez classique.

Pour mon projet, je voudrais que chaques utilisateurs puissent avoirs plusieurs roles, le soucis c'est qu'il pourrat y'avoir certainement plus de 300 rôles différents.

De plus, nous voudrions que ces rôles soit filtrables sur des actions, mais ça j'ai ma petite idée...

Ma question est, peut on se passer des rôles par défaut de Symfony, et peut on créer son propre système de rôles, car dans la security.yml j'ai peur que ça foute un peu le border.

En vous remerciant par avance.

Feelsonix.

Caractère non échappé lors de l'utilisation de la console SF

$
0
0

Bonjour,

Depuis peu, j'ai un problème avec l'utilisation de la console (je suis sur Windows). Je ne sais pas si cela vient de Windows ou de la console SF, je crois que c'est depuis une mise à jour Windows, sans en être certain.

En solution temporaire, j'utiliser https://cmder.net/, mais je ne peux pas l'utiliser depuis l'IDE

Ce que je fais

Je lance une commande pour créer une entité depuis le CDM, Powershell ou le CMD de mon IDE

php bin/console make:entity Test
> name
> typeX

Ce que je veux

Le processus normal avec des caractères colorés et bien formatés.

Ce que j'obtiens

r[K7[30;47melation[39;49m8e[K7[30;47mlation[39;49m8l[K7[30;47mation[39;49m8a[K7[30;47mtion[39;49m8t[K7[30;47mion[39;49m8i[K7[30;47mon[39;49m8o[K7[30;47mn[39;49m8n[K78

Ce qui est bizarre, c'est que le résultat est normal lorsque de la console demande
Field type (enter ? to see all types) [string]


Tableau en symfony 4

$
0
0

Bonjour,

Voila je rencontre un petit problème avec mon code.

Je veut metre en place un tableau qui affiche la liste des user (username et roles).
Mais j'ai un probleme au niveau des roles
J'arrive à afficher le tableau correctement si l'utilisateur ne possède qu'un roles :

{% for user in user %}
    <tr>
        <td>{{ user.username}}</td>
        <td>{{ user.roles[0]}}</td>

            <td><a href="{{ path('modif_user',{'id':user.id}) }}"> <img src="{{ asset('image/crayon.png')}}" /> </a></td>
            <td><a href="{{ path('supp_user',{'id':user.id}) }}"> <img src="{{ asset('image/poubelle.png')}}" /> </a></td>
{% endfor %}

Mais si un utilisateur vient à avoir plusieurs roles cela ne fonctionne pas ... Et si j'enleve le [0] j'obtient cette erreur :

An exception has been thrown during the rendering of a template ("Notice: Array to string conversion").

C'est la premiere fois que je poste sur un forum donc je ne sais pas si le code que je vous ai mis est suffisant ...

Merci d'avance pour votre réponse

:)

[Symfony 4] bug avec la méthode persist()

$
0
0

Maintenant le problème est que, quand je créer un nouvelle objet de réponse, et que je demander de persister, symfony me renvoie l'erreur suivante

Call to a member function persist() on null

Voici mon code

 /**
     *
     * @Route("/new-reponse/{id}", name="admin_new_reponse")
     */
    public function newReponse(Question $question, Request $request)
    {
        $reponse = new Reponse();
        $reponse
            ->setQuestion($question)
            ->setExercice($question->getExercice());

        $form = $this->createForm(ReponseType::class, $reponse);
        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {

            //dd($reponse);

            $this->em->persist($reponse);
            $this->em->flush();

            $this->addFlash('success', 'Réponse enregistré avec succès');

            return $this->redirectToRoute('admin_index_reponses', ['id' => $question->getId()]);
        }

        return $this->render('admin/formation/exercice/reponse/form_reponse.html.twig',
            [
                'question' => $question,
                'form' => $form->createView(),
            ]
        );
    }

Or quand je décommente le dd($reponse), je vois bien que $reponse est très bien rempli.

D'où vient ce problème et comment je peux le résoudre ?

Création de mon premier "voter"

$
0
0

Bonjour,

Je suis en train de créer une application pour 3 écoles de mon village.

Ce que je veux

Chaque directeur se connecte de manière indépendante, mais je ne souhaite pas que le directeur de l'école A, puisse visualiser et modifier un utilisateur d'une école B (en changeant le paramètre ID passé dans l'URL par exemple).
J'ai cru comprendre que la mise en place d'un "voter" serait la solution à ce problème.

Ce que je fais

Côté entités, je dispose :

  • D'une entité Director
  • D'une entité User
  • D'une entité School

Côté relation entre les entités :

  • Dans School j'ai une relation avec l'entité Director en OneToMany
  • Entre User et School j'ai une relation de type ManyToMany dont une table User_School est automatiquement générée

J'ai donc créé un voter :

php bin/console make:voter

Et me retrouve avec ce fichier :

<?php

namespace App\Security\Voter;

use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Core\Authorization\Voter\Voter;
use Symfony\Component\Security\Core\User\UserInterface;

class DirectorEditUserVoter extends Voter
{
    protected function supports($attribute, $subject)
    {
        // replace with your own logic
        // https://symfony.com/doc/current/security/voters.html
        return in_array($attribute, ['EDIT', 'VIEW'])
            && $subject instanceof \App\Entity\School;
    }

    protected function voteOnAttribute($attribute, $subject, TokenInterface $token)
    {
        $user = $token->getUser();
        // if the user is anonymous, do not grant access
        if (!$user instanceof UserInterface) {
            return false;
        }

        // ... (check conditions and return true to grant permission) ...
        switch ($attribute) {
            case 'EDIT':
                // logic to determine if the user can EDIT
                // return true or false
                break;
            case 'VIEW':
                // logic to determine if the user can VIEW
                // return true or false
                break;
        }

        return false;
    }
}

Ce que je cherche à faire

Pourriez-vous me dire comment mettre en place ma condition dans mes "case" (EDIT et VIEW) pour faire en sorte que je puisse modifier et éditer uniquement des utilisateurs qui sont dans la même école que la mienne ?

Un grand merci par avance !

Grub

autoriser qu'un seul utilisateur Administrateur

$
0
0

Bonjour,

Les utilisateurs s'authentifient avec leurs identifiants. Chaque utilisateur peut avoir plusieurs rôles (Administrateur, vendeur, acheteur, réaprovisionneur...). Pour cela j'utilise une entity nommée "UserRole" qui fait le lien entre mes utilisateurs (table "Users") et mes Roles (table "Role"). Dans mon entity "UserRole" je souhaiterai apporter la contrainte que le rôle "Administrateur" ne peut être attribué qu'une seule fois à un utilisateur. Comment puis-je apporter cette contrainte (je pourrais le faire dans mon contrôleur mais ça me parait plus propre de mettre cette contrainte dans l'entity). Est-ce possible ?

merci par avance pour votre aide ;-)

object not found by the @ParamConverter annotation.

$
0
0

Bonjour,

J'ai actuellement un problème que je n'arrive pas à résoudre...
**App\Entity\Comment object not found by the @ParamConverter annotation.

J'ai beau chercher je trouve aucune solution, je vois vraiment pas ou ça peut clocher...

<?php

namespace App\Controller;

use App\Entity\Comment;
use App\Entity\Patient;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class AdminCommentController extends AbstractController
{
    /**
     * Permet la suppression d'un compte rendu
     * 
     * @Route("/admin/comment/{id}/delete", name="admin_comment_delete")
     */
    public function index(EntityManagerInterface $manager, Comment $comment){
        $manager->remove($comment);
        $manager->flush();

        $this->addFlash(
            'success',
            "La fiche patient de  a bien été supprimé"
        );
        return $this->redirectToRoute('admin_ads_index');
    }
}

{% extends 'admin/base.html.twig' %}

{% block title %}Fiche du patient {{ patient.fullName }}{% endblock %}

{% block body %}
    <div class="container">
        <h1 class="my-5 text-center">Fiche du patient {{ patient.fullName }}</h1>
        <div class="row">
            <div class="col-6">
                <ul>
                    <li><strong>Nom : </strong>{{ patient.lastName }}</li>
                    <li><strong>Prénom : </strong>{{ patient.firstName }}</li>
                    <li><strong>Date de naissance : </strong>{{ patient.birthday }}</li>
                    <li><strong>Adresse : </strong>{{ patient.adresse }}</li>
                    <li><strong>Email : </strong>{{ patient.email }}</li>
                    <li><strong>Téléphone : </strong>{{ patient.tel }}</li>
                    <li><strong>Médecin traitant : </strong>{{ patient.doctor }}</li>
                </ul>
            </div>
            <div class="col-6">
                {#<a href="{{ path('admin_comment_create', { 'id': patient.id }) }}" class="btn btn-success float-right">Ajouter un bilan</a>#}
            </div>
        </div>

        <hr class="my-5">

        {% if patient.comments is empty %}
            <p class="text-center">Pas encore de compte rendu pour ce patient</p>
        {% else %}
            {% for comment in patient.comments %}
                <div class="jumbotron">
                    <h2 class="h3 text-center mb-5">RDV du {{ comment.date }}</h2>

                    <p>{{ comment.observation }}</p>
                    <p>{{ comment.bilan }}</p>

                    <p class="float-right mt-2">Prix de la séance : {{ comment.price }}&euro;</p>
                    <a href="{{ path('admin_comment_delete', { 'id': comment.id }) }}"><small>{{ comment.id }} Supprimer</small></a>
                </div>
            {% endfor %}
        {% endif %}

        <button id="addCom" class="my-5 btn btn-primary ml-auto">Ajout d'un compte rendu</button>

        <div id="formCom">

            <h1 class="my-5">Ajout d'un compte rendu</h1>

            {{ form_start(form) }}
            {{ form_widget(form) }}
            <button type="submit" class="btn btn-success">Ajouter le compte rendu</button>
            {{ form_end(form) }}

        </div>
    </div>
{% endblock %}
<?php

namespace App\Entity;

use App\Repository\CommentRepository;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass=CommentRepository::class)
 */
class Comment
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=255)
     */
    private $date;

    /**
     * @ORM\Column(type="float")
     */
    private $price;

    /**
     * @ORM\Column(type="text")
     */
    private $observation;

    /**
     * @ORM\Column(type="text")
     */
    private $bilan;

    /**
     * @ORM\ManyToOne(targetEntity=Patient::class, inversedBy="comments")
     */
    private $patient;

    public function getId(): ?int
    {
        return $this->id;
    }

    public function getDate(): ?string
    {
        return $this->date;
    }

    public function setDate(string $date): self
    {
        $this->date = $date;

        return $this;
    }

    public function getPrice(): ?float
    {
        return $this->price;
    }

    public function setPrice(float $price): self
    {
        $this->price = $price;

        return $this;
    }

    public function getObservation(): ?string
    {
        return $this->observation;
    }

    public function setObservation(string $observation): self
    {
        $this->observation = $observation;

        return $this;
    }

    public function getBilan(): ?string
    {
        return $this->bilan;
    }

    public function setBilan(string $bilan): self
    {
        $this->bilan = $bilan;

        return $this;
    }

    public function getPatient(): ?Patient
    {
        return $this->patient;
    }

    public function setPatient(?Patient $patient): self
    {
        $this->patient = $patient;

        return $this;
    }
}

Viewing all 1542 articles
Browse latest View live