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

Suppression d'un compte

$
0
0

Bonjour,

Voila je rencontre un petit problème avec mon code

Ce que je fais

Je cherche à supprimer un compte


    /**
     * @Route("/{id}/suppresionProfil", name="profil_suppression", methods={"DELETE"})
     */
    public function suppressionProfil(Request $request, User $user): Response
    {

        if ($this->isCsrfTokenValid('delete'.$user->getId(), $request->request->get('_token'))) {
            $entityManager = $this->getDoctrine()->getManager();
            $entityManager->remove($user);
            $entityManager->flush();

            $this->addFlash('sup', 'Votre compte a bien été supprimée');
        }

        return $this->redirectToRoute('accueil');
    }

Ce que j'obtiens

Je redirige bien l'utilisateur sur la page accueil et voilà l'erreur qui s'affiche :

You cannot refresh a user from the EntityUserProvider that does not contain an identifier. The user object has to be serialized with its own identifier mapped by Doctrine.

Pourtant en bdd le compte a bien été supprimé, et si je réactualise la page, je suis bien sur l'accueil

Merci par avance,


Comment ajouter une entité dans une collection via un formulaire ?

$
0
0

Bonjour à tous,

J'ai vraiment besoin de votre aide sur un de mes projets personnels.

Je crée une application qui possède 2 roles : => Un role de gestionnaire
=> Un role d'entreprise

Ce que je fais


 public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('firstName', TextType::class, $this->getConfiguration("Prénom", "Veuillez indiquer ici votre prénom"))
            ->add('lastName' , TextType::class, $this->getConfiguration("Nom", "Veuillez indiquer ici votre nom"))
            ->add('email',     EmailType::class, $this->getConfiguration("E-mail", "Veuillez indiquer ici votre e-mail"))
            ->add('picture' ,  UrlType::class, $this->getConfiguration("Url", "Veuillez indiquer ici l'url de votre image"))
            ->add('hash',      PasswordType::class, $this->getConfiguration("Hash", "Veuillez indiquer ici votre mot de passe"))
            ->add('passwordConfirm',      PasswordType::class, $this->getConfiguration("Confirmation de mot de passe", "Veuillez confirmer votre mot de passe"))
            ->add('introduction', TextType::class, $this->getConfiguration("Introduction", "Présentez votre entreprise avec une courte introduction"))
            ->add('description', TextareaType::class, $this->getConfiguration("Description détaillé", "Veuillez présenter ici votre entreprise en détails"))
            ->add('userRoles', CollectionType::class)
            ;
    }

Ce que je veux

Ce que je souhaiterais, c'est implémenter correctement le champ user Roles.

Le champ userRoles est une collection qui est composé d'entité Role.

Auriez-vous une piste ?

Passage d'options entre formulaire imbriqué

$
0
0

Bonjour,

J'ai un petit soucis avec mon code... et je dois rater un truc dans un coin mais je ne sais pas ou ;)
Voila, j'ai deux formulaires qui s'imbriquent.
Dans le parent, rien de special. Dans l'enfant, il y un champs ChoiceType que je dois remplir avec un tableau.
Voici le code pour le formulaire enfant:

$builder
->add (y'en a d'autres au dessus)
->add('expert', ChoiceType::class, [
                'attr' => ['id' => 'expert'],
                'choices' => $options['experts'],
            ])
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => Etudie::class,
            'required' => false,
            'consultants' => [],
            'experts' => [],
        ]);
    }

Le formulaire seul fonctionne bien.
Voici comment je passe mes info à l'enfant depuis mon Controller:

$etudie = new Etudie();
        $form = $this->createForm(EtudieType::class, $etudie, ["consultants" => $consultants, "experts" => $experts]);
        $form->handleRequest($request);

Quand j'imbrique mon tableau dans le parent ca se gate, mes options ne passent pas.

J'ai essayé plusieurs choses dans le formType parent:
1- utiliser le formType de l'enfant de facon basique

$builder
->add('etudie', EtudieType::class);

-> ca me ressort bien mon formulaire complet mais les ChoiceType restent vides.
-> je passe mes infos de la meme maniere que dans le Controller enfant mais aucune prise en compte

2- utiliser le CollectionType et y ajouter mes parametres

$builder
->add('etudie', CollectionType::class, [
                'entry_type' => EtudieType::class,
                'entry_options' => [
                    'consultants' => $options['consultants'],
                    'experts' => $options['experts']
                ]
            ]);

 public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => Personne::class,
            'required' => false,
            'consultants' => [],
            'experts' => [],

        ]);

-> Ca ne reconnait plus le formulaire enfant, Symfony m'indique que les proprietes n'existe pas ou ne sont pas public.
-> De plus, en m'appuyant sur la doc de SymfonyHow to Embed a Collection of Forms, je ne peux passer mes infos correctement puisque mon entité attend un string et pas un array.
Voici comment je fais dans mon Controller Parent:

$etudie = new Etudie();
$etudie->setConsultant($consultants);
$etudie->setExpert($experts);

$personne = new Personne();
$personne->getEtudie()->add($etudie);

Je cherche juste à pouvoir remplir dynamiquement mon ChoiceType enfant.
Mes infos sont issues d'une base de données classique.

N'hesitez pas à me dire si je suis un boulet parce que j'ai oublié ou zappé LE truc important dans la doc que je n'aurai pas fait / vu.
Merci par avance de votre aide ;)

Plusieurs type pour un même champs dans un formulaire ?

$
0
0

Bonjour,

Bonjour, je débute en Symfony, j'ai créé un formulaire dans un fichier juste pour le formulaire avec les champ relier à une entity et j'aimerai qu'un des champs puisse changer de type en fonction du choix de l'utilisateur via un select sans actualiser la page .

Vous comprendrez mieux avec le code ci-dessous :

// que l'utilisateur puisse passer d'un select :
->add('code_postal', ChoiceType::class,
    ['attr' => [
        'class' => "form-control chosen-select" ],
        'choices' => ['Choix 1' => null]])
 
// ou d'un input :
->add('code_postal', TextType::class,
    ['attr' => [
        'class' => "form-control" ]])

Quand je fait : {{ form_widget(demandeType.code_postal) }}
Il m'affiche le dernier add correspondant à "code postal", je cherche un moyen de pouvoir préciser quel type de champs je veux afficher.

Merci d'avance !

Fichier CSS non reconnu

$
0
0

Bonjour,

Incompréhension totale
dans ma base.html.twig

<link rel="stylesheet" href="https://bootswatch.com/4/spacelab/bootstrap.min.css">
        <link rel="stylesheet" href="{{ asset('css/style.css') }}">
        {% block stylesheets %}{% endblock %}

Sur certains projets symfony, le css fonctionne et sur d'autres non
Le chemin est bon : public > css > style.css
le nom est bon

mes classes sont bien retransmises dans style.css
je vide même le cache et je fais des rafraichissements CTRL MAJ R

impossible, quelqu'un aurait il une idée ? svp

symfony 4.4 et WSL2

$
0
0

Bonjour,

je développe un projet en WSL avec symfony 4.4 et ma db se trouve dans un répertoire laragon.

l'accès à la db fonctionne très bien avec WSL1 (j'arrive à faire des insertions, etc), mais pas du tout quand j'active WSL2
j'ai une error connexion refused.

Quand j'installe une db dans wsl ca fonctionne evidemment mais j'aimerais visualiser mes données via heidisql.

J'ai déjà tenté d'ouvrir le port entrant 3306 dans le firewall widnows mais ca ne change rien.

Avez vous déjà rencontré / résolu ce probleme ?

Merci d'avance

Webhook de stripe et Symfony

$
0
0

Bonjour les amis,

J'essaie d'installer webhook de stripe sur un projet symfony 4 pour écouter (En back-end) les évenements notamment le succès d'un paiement.

Et executer du code apres la recéption de l'évenement.

Voici le code de ma méthode

 /**
     *
     * @Route("/confirmation_paiement", name="confirmation_paiement")
     *
     */
    public function confirmationPaiement(Request $request){

        $endpoint_secret = self::WEBHOOK_TEST_KEY;

        $payload = @file_get_contents('php://input');
        $sig_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];
        $event = null;


        try {
            $event = \Stripe\Webhook::constructEvent(
                $payload, $endpoint_secret
            );

          //, $sig_header
        } catch(\UnexpectedValueException $e) {
            // Invalid payload
            return new Response(Response::HTTP_BAD_REQUEST);
            exit();
        } catch(\Stripe\Exception\SignatureVerificationException $e) {
            // Invalid signature
            return new Response(Response::HTTP_BAD_REQUEST);
            exit();
        }

        // Handle the event
        switch ($event->type) {
            case 'payment_intent.succeeded':
                $paymentIntent = $event->data->object; // contains a StripePaymentIntent
                handlePaymentIntentSucceeded($paymentIntent);
                break;
            case 'payment_method.attached':
                $paymentMethod = $event->data->object; // contains a StripePaymentMethod
                handlePaymentMethodAttached($paymentMethod);
                break;
            // ... handle other event types
            default:
                // Unexpected event type

                return new Response(Response::HTTP_BAD_REQUEST);
                exit();
        }

      return new Response(Response::HTTP_OK);
    }

Le problème est que Stripe reconnais bien l'url mais ne reçois aucune réponse de la méthode appelé, alors que je lui envoie bien une réponse http de type de 200.

Et deuxièment où et comment je doit configurer la variable 'HTTP_STRIPE_SIGNATURE'

plusieurs entity dans un même repository

$
0
0

Bonsoir,

Il est impossible d'appeler plusieurs entity dans le même repository

mais je voudrais vos conseils pour mon problème suivant :

J'ai 3 entity Annonce, Animal et Espece

J'ai créé une entity Search pour travailler un filtre de mes annonces.

Comme vous pouvez le supposer, dans mon annonce j'ai des informations propre à elle-même mais aussi j'ai fais appel à une relation avec Animal

qui cette dernière est aussi en relation avec Espece.

Donc par la suite, j'ai créé un form de Search qui s'injecte dans une route du Controller Annonce et du coup mes filtres sont dans le Repository Annonce

j'ai pu faire des filtres sur les infos de l'entity annonce, mais je ne peux informer les champs de ma class Animal

public function findAllWithPagination(Search $search) : Query{
    $req = $this->createQueryBuilder('a');

    if($search->getMinDate()){
        $req = $req->andWhere('a.dateStart >= :min')
                   ->setParameter(':min', $search->getMinDate());
    }

    if($search->getMaxDate()){
        $req = $req->andWhere('a.dateEnd <= :max')
                   ->setParameter(':max', $search->getMaxDate());
    }

    if($search->getSexe()){
        $req = $req
                    ->select('animalEntity.sexe AS animal')
                    ->leftJoin('a.animal', 'animalEntity')
                    ->andWhere('a.animal = :max')
                    ->setParameter(':max', $search->getSexe());
    }



    return $req->getQuery();
}

(pour info : createQueryBuilder('a') le "a" pour annonce)

Je voudrais pour commencer savoir si tout se passe uniquement sur le repository ?

Pour le moment je recherche à proposer le choix du sexe donc dans le form Search j'ai mis :

->add('sexe', EntityType::class,[
                'class' => Animal::class,
                'required' => false,
                'choice_label' => 'sexe'
            ])

l'erreur retournée est :

[Semantical Error] line 0, col 147 near 'animal = :ma': Error: Invalid PathExpression. StateFieldPathExpression or SingleValuedAssociationField expected.
Pourriez-vous me donner des conseils ou des pistes svp

Merci


RadioType

$
0
0

Bonjour,

Je n'arrive pas à relier 2 RadioType dans mon filtre

voilà mon form

->add('dateCreatedCroissant', RadioType::class, [
                'required' => false,
                'label' => "date de publication croissante",
            ])


            ->add('dateCreatedDecroissant', RadioType::class, [
                'required' => false,
                'label' => "date de publication décroissante"
            ])

voici mon repository

if($search->getDateCreatedCroissant()){
            $req = $req->orderBy('a.date_at','ASC');
        }

        if($search->getDateCreatedDecroissant()){
            $req = $req->orderBy('a.date_at','DESC');
        }

le problème est que si je coche sur l'un ça marche et si je coche l'autre, le premier ne se décoche pas, en php on utilise le même name mais là sur symfony je ne connais pas

Quelqu'un saurait la propriété à mettre ?

Merci

Erreurs dans Fixtures - Symfony 4.4 API REST

$
0
0

Bonjour,

Voila je rencontre un petit problème avec mon code.
Je faisais la formation Udemy sur les API Rest sur Symfony 4 : https://www.udemy.com/course/api-rest-avec-symfony-4-et-api-platform/learn/lecture/14976176#questions

J'en étais à l'étape des Fixtures.

Dans mon fichier AppFixtures, j'ai suivi la vidéo et ai donc un fichier comme suit:

<?php

namespace App\DataFixtures;
use App\Entity\Adherent;
use App\Entity\Livre;
use App\Entity\Pret;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Common\Persistence\ObjectManager;
use Faker\Factory;

class AppFixtures extends Fixture
{
    private $manager;
    private $faker;
    private $repoLivre;

    public function __construct()
    {
        $this->faker=Factory::create("fr_FR");
    }

    public function load(ObjectManager $manager)
    {
        $this->manager=$manager;
        $this->repoLivre=$this->manager->getRepository(Livre::class);
        $this->loadAdherent();
        $this->loadPret();
    }

/**
 *    Création des adhérents
*/
    public function loadAdherent(){
(...supprimé pour lecture)
        }

        $this->manager->flush();
    }

    public function loadPret(){
    (...supprimé pour lecture)
            }
            $this->manager->persist($pret);
        }
        $this->manager->flush();
    }
}

J'aimerais déclencher les chargements des fixtures via mon CLI

php bin/console doctrine:fixtures:load --append

J'ai 1 message d'erreur à l'execution:

In FileLoader.php line 180:

  Expected to find class "App\DataFixtures\AppFixtures" in file "C:\wamp64\www\biblioApi\src/DataFixtures\AppFixtures.php" while importing services from resource "../src/*", but it was not found! Check the namespace prefix used  
   with the resource in C:\wamp64\www\biblioApi\config/services.yaml (which is loaded in resource "C:\wamp64\www\biblioApi\config/services.yaml").                                                                                   


In FileLoader.php line 208:

  Expected to find class "App\DataFixtures\AppFixtures" in file "C:\wamp64\www\biblioApi\src/DataFixtures\AppFixtures.php" while importing services from resource "../src/*", but it was not found! Check the namespace prefix used  
   with the resource.                        

Dans mon fichier "service.yaml", j'ai :

# This file is the entry point to configure your own services.
# Files in the packages/ subdirectory configure your dependencies.

# Put parameters here that don't need to change on each machine where the app is deployed
# https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
parameters:

services:
    # default configuration for services in *this* file
    _defaults:
        autowire: true      # Automatically injects dependencies in your services.
        autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.

    # makes classes in src/ available to be used as services
    # this creates a service per class whose id is the fully-qualified class name
    App\:
        resource: '../src/*'
        exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}'

    # controllers are imported separately to make sure services can be injected
    # as action arguments even if you don't extend any base controller class
    App\Controller\:
        resource: '../src/Controller'
        tags: ['controller.service_arguments']

    # add more service definitions when explicit configuration is needed
    # please note that last definitions always *replace* previous ones

Je ne vois pas s'il manque quelque chose dans un des fichiers. Etant un peu noob, je ne vois pas mon erreur.
D'avance merci :)

Impossible de loader fixtures

$
0
0

Bonjour,

Voila je rencontre un petit problème avec mon code.
Je faisais la formation Udemy sur les API Rest sur Symfony 4.4 : https://www.udemy.com/course/api-rest-avec-symfony-4-et-api-platform/learn/lecture/14976176#questions

J'en étais à l'étape des Fixtures.

Dans mon fichier AppFixtures, j'ai suivi la vidéo et ai donc un fichier comme suit:

<?php

namespace App\DataFixtures;
use App\Entity\Adherent;
use App\Entity\Livre;
use App\Entity\Pret;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Common\Persistence\ObjectManager;
use Faker\Factory;

class AppFixtures extends Fixture
{
    private $manager;
    private $faker;
    private $repoLivre;

    public function __construct()
    {
        $this->faker=Factory::create("fr_FR");
    }

    public function load(ObjectManager $manager)
    {
        $this->manager=$manager;
        $this->repoLivre=$this->manager->getRepository(Livre::class);
        $this->loadAdherent();
        $this->loadPret();
    }

/**
 *    Création des adhérents
*/
    public function loadAdherent(){
(...supprimé pour lecture)
        }

        $this->manager->flush();
    }

    public function loadPret(){
    (...supprimé pour lecture)
            }
            $this->manager->persist($pret);
        }
        $this->manager->flush();
    }
}

J'aimerais déclencher les chargements des fixtures via mon CLI

php bin/console doctrine:fixtures:load --append

J'ai 1 message d'erreur à l'execution:

In FileLoader.php line 180:

  Expected to find class "App\DataFixtures\AppFixtures" in file "C:\wamp64\www\biblioApi\src/DataFixtures\AppFixtures.php" while importing services from resource "../src/*", but it was not found! Check the namespace prefix used  
   with the resource in C:\wamp64\www\biblioApi\config/services.yaml (which is loaded in resource "C:\wamp64\www\biblioApi\config/services.yaml").                                                                                   


In FileLoader.php line 208:

  Expected to find class "App\DataFixtures\AppFixtures" in file "C:\wamp64\www\biblioApi\src/DataFixtures\AppFixtures.php" while importing services from resource "../src/*", but it was not found! Check the namespace prefix used  
   with the resource.                        

Dans mon fichier "service.yaml", j'ai :

# This file is the entry point to configure your own services.
# Files in the packages/ subdirectory configure your dependencies.

# Put parameters here that don't need to change on each machine where the app is deployed
# https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
parameters:

services:
    # default configuration for services in *this* file
    _defaults:
        autowire: true      # Automatically injects dependencies in your services.
        autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.

    # makes classes in src/ available to be used as services
    # this creates a service per class whose id is the fully-qualified class name
    App\:
        resource: '../src/*'
        exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}'

    # controllers are imported separately to make sure services can be injected
    # as action arguments even if you don't extend any base controller class
    App\Controller\:
        resource: '../src/Controller'
        tags: ['controller.service_arguments']

    # add more service definitions when explicit configuration is needed
    # please note that last definitions always *replace* previous ones

Je ne vois pas s'il manque quelque chose dans un des fichiers. Etant un peu noob, je ne vois pas mon erreur.
D'avance merci :)

Fichier CSS non reconnu

$
0
0

Bonjour,

Incompréhension totale
dans ma base.html.twig

<link rel="stylesheet" href="https://bootswatch.com/4/spacelab/bootstrap.min.css">
        <link rel="stylesheet" href="{{ asset('css/style.css') }}">
        {% block stylesheets %}{% endblock %}

Sur certains projets symfony, le css fonctionne et sur d'autres non
Le chemin est bon : public > css > style.css
le nom est bon

mes classes sont bien retransmises dans style.css
je vide même le cache et je fais des rafraichissements CTRL MAJ R

impossible, quelqu'un aurait il une idée ? svp

Doctrine : Récuperer des données qui ne font pas partis d'une Entity

$
0
0

Bonjour,

J'aimerais utiliser doctrine afin de récuperer des données dans une de mes tables, qui n'est pas une entité.

use Doctrine\DBAL\Driver\Connection;

$connection->fetchAll("SELECT ...");

Avec le composant connection, je suis capable de récuperer mes données dans toutes mes entity, mais des que je choisi ma table qui n'en est pas une, j'ai une erreur.

Auriez vous une solution ?

Merci

Ce que je fais

Ici le code fonctionne mais je suis obligé d'utiliser PDO. La requête AJAX devient assez longue. de plus je dois préparer ma requête SQL afin d'éviter les failles.

    /**
     * @Route("/api/search", name="map_api_search")
     */
    public function search(Connection $connection, Request $request, ObjectManager $manager) : Response {

        if($ajaxRequest = $request->getContent())
        {
            $requestContent = json_decode($ajaxRequest, true);

            $content = $requestContent["content"];

            $config = new \Doctrine\DBAL\Configuration();

            $connectionParams = array(
                'dbname' => 'smartport',
                'user' => 'root',
                'password' => '',
                'host' => '127.0.0.1:3306',
                'driver' => 'pdo_mysql',
            );

            $conn = \Doctrine\DBAL\DriverManager::getConnection($connectionParams, $config);

            // Prepare the query
            $sql = "SELECT nom, lon, lat, id FROM `chimie_stations2` WHERE nom LIKE '%$content%' AND aasqa = 'PACA'";
            // Execute SQL query
            $stmt = $conn->query($sql);
            //Prepare an array to push all the results from the query
            $results = array();
            // Processing...
            while($data = $stmt->fetch())
            {
                $results[] = $data; 
            } 

            if(($results)) {
                return new JsonResponse([
                    'result' => true,
                    'results' => json_encode($results),
                    ]);
            } else {
                return new JsonResponse([
                    'result' => false,
                ]);
            }
        }
    }

Error on composer install

$
0
0

Bonjour,

je viens de changer de machine, je clone donc un projet sur lequel je dois bosser et qui fonctionne très bien en ligne.
Voici l'erreur que j'obtiens lors du composer install :

 Cannot autowire service "App\Repository\AdresseEntrepriseRepository": argum  
!!    ent "$registry" of method "__construct()" references interface "Symfony\Bri  
!!    dge\Doctrine\RegistryInterface" but no such service exists. Try changing th  
!!    e type-hint to "Doctrine\Persistence\ManagerRegistry" instead.

J'arrivais très bien à bosser dessus juste avant que je change de machine...

Page ne fonctionne pas

$
0
0

Bonjour,

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

jai developper un site avec le framework symfony 4.
quand je deme connecter via page login avec mon compte admin je ne suis pas rediriger vers la partie admin jai une page inaccessible
Décrivez ici votre code ou ce que vous cherchez à faire

Entourez votre code pour bien le mettre en forme

Ce que je veux

je veux que quand je me connecte avec les infos de l'admin je soit rédiger vers la partie donc le dasboard

Ce que j'obtiens

cette page ne fonctionne pas


hébergeur Symfony

$
0
0

Bonjour,

Voià, afin de prèsenter mon projet à une association, je recherche un hébergeur gratuit qui supporte symfony.

Les gratuits ne sont pas fiable, mais c'est juste pour des démontrations de site.

Si vous connaissez un autre moyen, je suis preneur.

A savoir, que j'ai pas de pc portable, je ne veux pas faire l'hébergement chez moi.

Merci par avance.

Confusion API/Symfony

$
0
0

Bonjour,

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

Ce que je fais

Dans le cadre de mon stage, je créé une API REST sur Symfony 4.4.

J'ai donc d'un côte: l'API que je réalise qui va devoir héberger tous les algos de calcul de prix, de taux d'occupation de chambres,...
De l'autre, j'ai le serveur-client qui va puiser en JSON mes données (partie que je reprends d'un autre stagiaire).

Je me perds un peu dans la logique des API, des endpoints...

Ici, j'aimerais calculer le nombre de chambres totales par type de chambre (simple, double, familiale) et envoyer un seul endpoint qui regrouperait les 3 calculs de chambres par type de chambre.

Je fais cela dans mon controller "HotelController":

    /**
     * @Route("/hotels/{id}", name="hotels_id", methods={"GET"})
     */

    public function sumAllRoomsOfHotel($id, HotelRepository $hotelRepo)
    {
//        $em = $this->manager();
        $q = Doctrine_Query::create()
        ->SELECT('COUNT(DISTINCT ro.id) AS room_total')
        ->FROM ('room AS ro')
        ->InnerJoin('withdraw AS w ON w.room_id = ro.id')
        ->InnerJoin('room_type AS rt ON ro.room_type_id = rt.id')
        ->InnerJoin('hotel AS h ON rt.hotel_id = h.id')
        ->InnerJoin('room_category AS rc ON rt.room_category_id = rc.id')
        ->WHERE('rc.id = rt.room_category_id')
        ->AND('h.id=$id"');
//                 echo '<pre>'; var_dump($rawSql); echo '</pre>';
        $hotels = $q->fetchArray();
        echo $hotels;

Ce que je veux

En faisant en RAWSQL et un var_dump de ma requête, je vois bien que ma requête sort ("SELECT ... FROM... WHERE h.id=3"), je voudrais sortir les 3 résultats : un pour les simple, un pour les double et un pour les familiales

Ce que j'obtiens

Depuis que je viens de basculer en DQL, j'ai ce message d'erreur:
"Attempted to load class "Doctrine_Query" from namespace "App\Controller".
Did you forget a "use" statement for another namespace?"

J'ai dû m'embrouiller dans la logique des API car je ne pensais pas faire 3 fonctions distinctes (1 par type de chambre) et surtout si c'est pour les afficher dans un seul endpoint.

Est ce que pour vous je partais sur la bonne piste ou alors ma logique était fausse?
Merci d'avance

Afficher photos via un id de dossier (qui est une entité)

$
0
0

Bonjour,

Je souhaite afficher des photos qui sont en lien avec leurs dossiers, j'ai donc trois tables : Photos => Dossier => Categorie.
Les catégories sont fixes et enregistrées en basse.
Les dossiers sont à créer par l'utilisateur et affilier à une une catégorie.
Les photos sont à être ajouté et affilié à un dossier.

Ce que je fais

Pour l'instant j'arrive à afficher les noms des dossiers, dans un DropDown

<button class="btn" data-filter=".game">Game Design</button>
                        <button class="btn" data-filter=".level">Level Design</button>
                            <button type="button" class="btn " data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                                Modèle 3D
                            </button>
                            <div class="dropdown-menu">
                                {% for modele in modele %}
                                    <button class="dropdown-item"  data-filter=".{{ modele.id }}" >{{ modele.libelle }}</button>
                                {% endfor %}
                            </div>
                        <button class="btn" data-filter=".dessin">Dessin</button>
    $repo = $this->getDoctrine()->getRepository(Dossier::class);

        $game = $repo->findBy(array('categorie' => 1 ));
        $level = $repo->findBy(array('categorie' => 2 ));
        $dessin = $repo->findBy(array('categorie' => 3 ));
        $modele = $repo->findBy(array('categorie' => 4 ));

        $repo = $this->getDoctrine()->getRepository(Photos::class);
        $photo = $repo->findAll();

Ce que je veux

Je veux qu'au clic du nom du dossier dans le dropdown, j'affiche les images correspondant au dossier.
Le code en dessous me permettait d'afficher les images selon leurs catégories, mais désormais je n'ai plus de dossiers fixe, car l'utilisateur peut les créer à sa guise.

{% for modele in modele %}
            <div class="col-12 col-sm-6 col-lg-3 single_gallery_item {{ modele.id }} mb-30 wow fadeInUp" data-wow-delay="100ms">
                <div class="single-portfolio-content">
                    <img src="{{ asset("uploads/" ~ modele.photos) }}" alt="">
                    <div class="hover-content">
                        <a href="{{ asset("uploads/" ~ modele.image) }}" class="portfolio-img">+</a>
                    </div>
                    <div class="align-items-center">
                        {{ modele.description }}
                    </div>
                </div>
            </div>
        {% endfor %}

Ce que j'obtiens

J'obtiens, rien. Je sèche complétement, on est deux sur le projet, deux novices et jeune diplômer. On voudrait des pistes comment envoyer la requetes et obtenir les photos liées au dossier. Merci de votre aide.

[Slim/Twig/Jquery] un bouton check ALL

$
0
0

Bonjour,

Je sais que je ne sui pas tout à fait au bon endroit mais le framework Slim est un symfony light. Alors j'espère que les solutions sont proches ...
J'ai trouvé diverses choses avec des problématiques approchantes sur le web (openclassrooms, stackoverflow), mais rien de fonctionne.

Ce que je fais

Alors mon fichier twig actuel

{# LA PARTIE DU FORMULAIRE #}

<div class="col m7 ">
                                    <p class="form-text offset-m1 col m11">Opérateurs</p>
                                    <div class="input-field col m3">
                                        <input id="select-all-operators" name="select-all-operators" type="checkbox">
                                        <label for="select-all-operators">Tous</label>
                                    </div>

                                    <div class="input-field col m9" id="selectionOperators">
                                        <select multiple class="input-field" id="operator" name="operator[]">
                                            <span class="listeDeroulante">
                                                <option value="" disabled selected>----</option>
                                                {% for operator in operators %}


                                                        <option name="{{ operator.DENOMINATION_1 }}" value="{{ operator.DENOMINATION_1 }}">{{ operator.DENOMINATION_1 }}</option>

                                                {% endfor %}

                                            </span>
                                        </select>
                                        <label class="input-field">Ou choisir un opérateur</label>
                                    </div>


                                </div>



{# LE BLOC SCRIPT  EN FIN DE PAGE#}

{% block script %}
        {#Pour l'affichage de l'input select#}
        <script>
            $(document).ready(function() {
                $('select').material_select();
            });
        </script>

        {#Pour le tableau#}
        <script src="{{ base_url() }}/js/sortable.js"></script>

        {#Pour le bouton checkbox : Tous#}
        <script src="{{ base_url() }}/js/selectAll-None.js"></script>

        {#Activation des fonctions au lancement de la page#}
        <script>
            window.onload = function() {
                sauvegardeCheck();
                typeCheck();
                eventListenerSelect();
            }
        </script>
    {% endblock %}

le fichier selectAll-None.js

function eventListenerSelect() {
    //Ne cocher aucun robot
    $('#select-none').click(function() {
        if($(this).is(':checked')) {
            $("#selectionOrdis").find('input[type=checkbox]').each(function () {
                this.checked = false; //on décoche tous les ordis
            });

            $('select#ordi option').removeAttr("selected");  //on retire l'attribut 'selected'

            document.getElementById("select-all").checked = false;
        }
    });

    //Cocher tous les robots
    $('#select-all').click(function() {
        if($(this).is(':checked')) {
            $("#selectionOrdis").find('input[type=checkbox]').each(function () {
                this.checked = true; //on coche tous les ordis
            });

            $('select#ordi option').prop("selected", "selected"); //on applique l'attribut 'selected'

            document.getElementById("select-none").checked = false;
        }
    });

    //Cocher tous les opérateurs
    $('#select-all-operators').click(function() {
        if($(this).is(':checked')) {
            $("#selectionOperators").find('input[type=checkbox]').each(function () {
                this.checked = true; //on coche tous les opérateurs
            });

            //on applique l'attribut 'selected' à l'élément html
            $("select#operator option").prop("selected", "selected");

        }
    });
}

Ce que je veux

Alors voilà le topo :

j'ai une checkbox (appelons la checkAll) et un select dans mon formulaire.
Je voudrais que quand on coche checkAll, cela coche toutes les checkboxs de mon select.

Et quand cela sera ok, j'aimerai que si une des checkboxs contenuent dans le select n'est pas cochée, cela décoche automatiquement checkAll.

Ce que j'obtiens

Le code ne fonctionne pas du tout, pourtant je me suis appuyée sur de l'existant qui fonctionne. Les fonctions select-All et select None fonctionnent, mais elles sont utilisées dans un autre twig.

Utlisation knpSnappy

$
0
0

Bonjour,

Mon objectif est de générer un fichier pdf contenant une liste de candidats.
Je bloque depuis quelques jours et je voudrais donc un coup de main.

j'ai installé le package via composer require knplabs/knp-snappy-bundle

Décrivez ici votre code ou ce que vous cherchez à faire

Voici comment se presente mon fichier app/config/package/knp_snappy.yaml
knp_snappy:
pdf:
enabled: true
binary: "\"C:\\wkhtmltopdf\\bin\\wkhtmltopdf.exe\""
options:
## set default settings
no-outline: true
page-size: LETTER
# recommend to set utf-8 as default encoding
encoding: UTF-8
image:
enabled: true
binary: "\"C:\\wkhtmltopdf\\bin\\wkhtmltoimage.exe\""
options: []
`
le contenu du Controller

<?php
namespace App\Controller;
use App\Entity\Candidat;
use App\Form\CandidatType;
use App\Form\TuteurType;
use App\Repository\CandidatRepository;
use Doctrine\Common\Persistence\ObjectManager;
//use Doctrine\Common\Persistence\ManagerInterface;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\File\Exception\FileException;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Knp\Bundle\SnappyBundle\Snappy\Response\PdfResponse;
use Knp\Bundle\SnappyBundle\Snappy;
use Knp\Snappy\Pdf;
use Knp\Bundle\SnappyBundle\DependencyInjection;
class VanController extends AbstractController
{
/**

  • @Route("/listCandidats", name="van_list", methods={"GET"})
  • */

    public function listCandidats(Request $request)
    {
    $repo = $this->getDoctrine()->getRepository(Candidat::class);

    $candidat = $repo->findAll();
    $snappy = $this->get("knp_snappy.pdf");
    //$snappy->setOption("encoding", "UTF-8");

      $html = $this->renderView('van/list.html.twig', [
           'candidats'=> $candidat,
           'title' => "Welcome to our PDF Test"
        ]);
      $filename = "myfirst_pdf_with_snappy";
      //$websiteurl = "ourcodeworld.com";
      //$snappy->get('knp_snappy.pdf')->generate('http://www.google.fr', '/path/to/the/file.pdf');
      return new Response(
          $snappy->getOutputFromHtml($html),
          200,
          array(
              'Content-Type' => 'application/pdf',
              'Content-Disposition' => 'inline; filename="'.$filename.'.pdf"'
          )
      );
    

    }

}
`

Là l'erreur d'exécution que je reçois.

ServiceNotFoundException
HTTP 500 Internal Server Error
Service "knp_snappy.pdf" not found: even though it exists in the app's container, the container inside "App\Controller\VanController" is a smaller service locator that only knows about the "doctrine", "form.factory", "http_kernel", "parameter_bag", "request_stack", "router", "security.authorization_checker", "security.csrf.token_manager", "security.token_storage", "serializer", "session" and "twig" services. Try using dependency injection instead.

Viewing all 1542 articles
Browse latest View live