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

Authentification avec api nodeJs

$
0
0

Salut à tous,
Voilà je suis en train de bosser sur un projet symfony avec une APi NodeJs qui fait l'interface entre ma BDD et les clients. Mon problème est pour l'authetification, comment que je fais pour authentifier un utilisateur sachant que je passe par une APi car pour le coup je n'ai pas d'entity ...

Merci pour votre aide et vos idées ;)


Symfony 4 Raffraichir le rôle dans la session

$
0
0

Bonjour les amis,

En ce moment dans mon application Symfony lorsqu'un utilisateur clique sur un bouton pour changer de Rôle, il doit se déconnecter et se reconnecter pour pouvoir utiliser son nouveau rôle.

En effet le rôle est stocké dans la session.

Je viens de regarder dans la doc de symfony, https://symfony.com/doc/current/components/http_foundation/sessions.html j'ai pas trop compris comment je peux faire pour faire en sorte que l'utilisateur puisse utiliser son nouveau rôle sans se déconnecter car c'est un peu contraignant.

Quelqu'un a déjà fait ce que j'essaie de faire ?

Envoie de mail SWIFTMAILER

$
0
0

Bonjour,

Voila je rencontre un petit problème avec l'envoie de mail via swift mailer, j'ai à peu près tester tout ce que j'ai pu trouver sur internet

Ce que je fais

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

public function reset(UserRepository $userRepository, Request $request, PasswordNotifications $notifications, \Swift_Mailer $mailer, Environment $environment)
    {
        $resetPassword = new resetPassword();
        $form = $this->createForm(ResetPasswordType::class, $resetPassword);
        $form->handleRequest($request);
        if($form->isSubmitted() && $form->isValid()){
            $userSearch = $userRepository->findByEmail($resetPassword->getEmail());
            if($userSearch != null){
                $message = (new \Swift_Message('Réintialiser votre mot de passe.'))
                    ->setFrom('test@test.fr')
                    ->setTo($resetPassword->getEmail())
                    ->setReplyTo($resetPassword->getEmail())
                    ->setBody($environment->render('emails/resetPassword.html.twig', [
                        'text/html'
                    ]));
                if ($mailer->send($message) == 0) {
                    $this->addFlash('warning', "Erreur lors de l'envoi du mail");
                } else {
                    $this->addFlash('success', "Un mail vient d'etre envoye !");
                }
            }
        }

j'ai essayé cette config

MAILER_URL=smtp://smtp.gmail.com:587?encryption=tls&username=username&password=motdepasse
puis celle ci
swiftmailer:
    url: '%env(MAILER_URL)%'
    spool: { type: 'memory' }
    transport : smtp
    host: smtp.gmail.com
    port: 465
    auth_mode: login
    username: monadresse@gmail.com
    password: codegoogleapp
    encryption: ssl
    stream_options:
        ssl:
            allow_self_signed: true
            verify_peer: false
            verify_peer_name: false

J'ai mis le début de mon mail avant le @ pour username et le password le moit de passe d'application sécuristé de google.

Ce que je veux

Envoyer un mail :)

Ce que j'obtiens

je n'obtiens aucun erreur dans mon profil le mail est bien récupéré et envoyé donc je pense que cela vient de la configuration swiftmailer

Could not determine access type

$
0
0

Bonjour,

Voila je rencontre un petit problème avec mon code. Je veux créer une entité maitre nommée Users et une autre nommée Specialties.

Ce que je fais

L'entité Users contient les propriétés et les fonctions suivantes:

<?php

namespace App\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\AdvancedUserInterface;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;

/**
 * @ORM\Entity(repositoryClass="App\Repository\UsersRepository")
 * @UniqueEntity(
 *     fields={"email"},
 *     errorPath="email",
 *     message="It appears you have already registered with this email."
 * )
 */
class Users implements UserInterface
{

    /**
     * Users constructor.
     */
    public function __construct()
    {
        $this->created_at = new \DateTime();
        $this->specialtyId = new ArrayCollection();
    }

    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     * @Groups({"public"})
     */
    private $id;

    //Other properties there...

    /**
     * @ORM\ManyToMany(targetEntity="App\Entity\Specialties", inversedBy="users")
     */
    private $specialtyId;

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

    /**
     * @return Collection|Specialties[]
     */
    public function getSpecialtyId(): Collection
    {
        return $this->specialtyId;
    }

    public function addSpecialtyId(Specialties $specialtyId): self
    {
        if (!$this->specialtyId->contains($specialtyId)) {
            $this->specialtyId[] = $specialtyId;
        }
        return $this;
    }

    public function removeSpecialtyId(Specialties $specialtyId): self
    {
        if ($this->specialtyId->contains($specialtyId)) {
            $this->specialtyId->removeElement($specialtyId);
        }
        return $this;
    }

}

L'entité Specialties contient le code suivant:

<?php

namespace App\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="App\Repository\SpecialtiesRepository")
 */
class Specialties
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    //Other properties there...

    /**
     * @ORM\ManyToMany(targetEntity="App\Entity\Users", mappedBy="specialtyId")
     */
    private $users;

    public function __construct()
    {
        $this->users = new ArrayCollection();
    }

    /**
     * @return Collection|Users[]
     */
    public function getUsers(): Collection
    {
        return $this->users;
    }

    public function addUser(Users $user): self
    {
        if (!$this->users->contains($user)) {
            $this->users[] = $user;
            $user->addSpecialtyId($this);
        }

        return $this;
    }

    public function removeUser(Users $user): self
    {
        if ($this->users->contains($user)) {
            $this->users->removeElement($user);
            $user->removeSpecialtyId($this);
        }

        return $this;
    }
}

Ce que je veux

Ces entités créent une troisième table nommé users_specialties avec les propriétés users_id et specialties_id.
Je veux sauvegarder les informations liés à l'utilisateur sur la table users, ainsi que lier l'utilisateur à sa spécialité sur la table users_specialties.
Un utilisateur peut avoir plusieurs spécialités

Ce que j'obtiens

Malheureusement en essayant de créer l'utilisateur, j'obtiens cette erreur:
"App\Entity\Users": The property "specialtyId" in class "App\Entity\Users" can be defined with the methods "addSpecialtyId()", "removeSpecialtyId()" but the new value must be an array or an instance of \Traversable, "App\Entity\Specialties" given.**

Question par rapport aux formulaires

$
0
0

Salut

J'ai une table ville dans ma base de donnée et je veux utiliser les données de cette table pour créer un champs de type select dans un autre formulaire. Comment procéder SVP aidez moi

SwiftMailer

$
0
0

Bonjour,

J'ai un problème que j'imagine assez bete mais comment m'y prendre, je ne sais pas trop.

Mon but est d'envoyer un email lorsqu'un utilisateur s'enregistre sur le site.

J'ai donc une entité subscriber

<?php

namespace App\Controller\Front\Customer;

use App\Controller\Modules\Mailer\MailerController;
use App\Entity\Customer\Users;
use App\Form\UsersType;
use App\Repository\Customer\UsersRepository;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Doctrine\Common\Persistence\ObjectManager;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;

class SubscriberController extends AbstractController
{
     /**
     * @var UsersRepository
     */
    private $repository;

    /**
     * @var ObjectManager
     */
    private $em;

    public function __construct(UsersRepository $repository, ObjectManager $em)
    {
        $this->repository = $repository;
        $this->em = $em;
    }

    /**
     * @Route("/inscription", name="subscriber")
     */
    public function index(Request $request, UserPasswordEncoderInterface $passwordEncoder)
    {
        $users = new Users();

        $form = $this->createForm(UsersType::class, $users);
        $form->handleRequest($request);

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

            $password = $passwordEncoder->encodePassword($users, $users->getPassword());
            $users->setPassword($password);

            $this->em->persist($users);
            $this->em->flush();
            $this->addFlash('success', 'Enregistrement effectué avec succès');

            $name = $users->getUsername();
            $mail = $users->getEmail();

            MailerController::sendSubscribe($name, $mail, $mailer);

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

        return $this->render('security/subscriber.html.twig', [
            'users ' => $users,
            'form' => $form->createView()
        ]);
    }
}

et une entité Mailer :

<?php

namespace App\Controller\Modules\Mailer;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Doctrine\Common\Persistence\ObjectManager;

class MailerController extends AbstractController
{

    public function sendSubscribe($name, $email, \Swift_Mailer $mailer)
    {
        $message = (new \Swift_Message('Hello Email'))
            ->setFrom($email)
            ->setTo('recipient@example.com')
            ->setBody(
                $this->renderView(
                    'emails/subscriber/subscriber.html.twig',
                    ['name' => $name]
                ),
                'text/html'
            )

            // you can remove the following code if you don't define a text version for your emails
            ->addPart(
                $this->renderView(
                    // templates/emails/registration.txt.twig
                    'emails/subscriber/subscriber.txt.twig',
                    ['name' => $name]
                ),
                'text/plain'
            )
        ;

        $mailer->send($message);
    }
}

Forcement j'ai une erreur qui m'indique que pour ma fonction sendSubscribe() il me manque un parametre, mais je ne sais pas quoi mettre à vrai dire.

Quelqu'un serait m'expliquer cela ?

Cordialement.

Twig cache-extension, le cache ne se rafraichi pas

$
0
0

Bonjour à tous,

Je viens de regarder le tutoriel sur le problème n+1 avec les ORM et j'ai essayé de mettre en place le système de cache qui me semble être bien adapter à ma situation. Je suis passé de 47 requète à 7 (J'étais super content !!). Le problème c'est révélé lorsque j'ai reload mes fixtures, cache extension continu a récupéré les fichiers en cache sans les recharger alors que mon updated_at est par défaut égale à la date de création et donc change à chaque reload de mes fixtures.

Ce que je fais

J'ai suivie exactement le tuto avec la définition de service. La seule chose qui change c'est ma balise cache dans ma vue twig:

{% cache 'manga' ~ manga.id manga.updatedAt.timestamp %}

Je ne comprend pas du tout pourquoi ça ne fonctionne pas :'( Quand je vais sur la doc, il parle de stratégie de mise en cache et je me demande si par defaut (vue que ma version est différente) il n'est pas en mode Lifetime ?

Merci d'avance

Methos

Changer le mois du calendrier sans recharger la page

$
0
0

Bonjour tout le monde. Je travail actuellement sur un calendrier de réservation pour deux appartements. Le calendrier fonctionne correctement et affiche bien les réservations. Je précise que mon calendrier fonctionne exactement comme dans le cours présent sur le site [https://www.grafikart.fr/tutoriels/calendrier-php-partie1-995].

Mon problème est que l'intégralité de ma page recharge lorsque je passe au mois précédent/suivant. Rien de plus normal vu que mes boutons mois précédent/suivant sont des liens qui renvoient au controller les nouvelles variables mois et année afin de recréer une vue du calendrier et effectuer une requête afin de récupérer les réservations du mois affiché.

Je suppose que pour palier au problème, il faut que j'utilise AJAX. Je suis totalement perdu car que je n'ai jamais utilisé conjointement AJAX avec Symfony.

Dois-je effectuer l'intégralité du traitement de mon controller dans la requête ajax ? Comment procéder ?

Le but final étant d'intégrer ce calendrier de réservation sur un site qui est sous symfony.
Merci d'avance.

##index.html.twig:
`{% extends 'base.html.twig' %}

{% block body %}

{{ calendar.toString }}

//Affiche Le mois et l'année //Boutons pour passer au mois précédent/suivant <> {% for day in calendar.days %} {{ day }} //Affiche sur la première ligne du calendrier les jours de la semaine en toute lettre {% endfor %} {% for i in range(0, weeks) %} //Pour chaque semaines du mois {% for day in calendar.days %} //Pour chaque jours de la semaine {% set date = startingDay|date_modify("+" ~ (loop.index0 + i * 7) ~ "days" ) %} //Grise les jours qui n'appartiennet pas au mois sélectionné {{ date|date("d") }} //Nombre du jour {% endfor %} {% endfor %}

{% endblock %}`

##CalendarController.php:
`<?php

namespace App\Controller;

use App\Calendar\Calendar;
use App\Entity\Appartement;

use App\Entity\Reservation;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class CalendarController extends AbstractController
{
/**
* @Route("/calendar", name="calendar")
*/
public function index(Request $request)
{
$getMonth = $request->query->get('month'); //Récupère le mois et l'année passés en $_post via les liens mois précédent/suivant
$getYear = $request->query->get('year');

    $calendar = new Calendar($getMonth ?? null, $getYear ?? null); //Créer une vue du mois sélectionné. Si le controller n'a pas reçu de mois/année en paramètre, il prend le mois actuel.

    $weeks = $calendar->getWeeks(); //Nombre de semaines dans le mois

    $startingDay = $calendar->getStartingDay(); //Premier jour de la vue du mois.
    $startingDay = $startingDay->format('N') === '1' ? $startingDay : $calendar->getStartingDay()->modify('last monday'); //Si le premier jours de la vue du mois n'est pas le 1er, prend le lundi de la semaine précédente.

    $endingDay = (clone $startingDay)->modify('+' . (6 + 7 * ($weeks - 1)) . ' days'); //Dernier jours de la vue du mois

    $em = $this->getDoctrine()->getManager();
    $connection = $em->getConnection();

    $start = $startingDay->format('Y-m-d');
    $end = $endingDay->format('Y-m-d');

    $query1 = $connection->prepare("SELECT * FROM reservation r WHERE r.appartement_id = 1 AND r.start BETWEEN '$start' AND '$end'");
    $query1->execute();
    $query2 = $connection->prepare("SELECT * FROM reservation r WHERE r.appartement_id = 2 AND r.start BETWEEN '$start' AND '$end'");
    $query2->execute();
    $reservationsView_8 = $query1->fetchAll();
    $reservationsView_9 = $query2->fetchAll();

    return $this->render('calendar/index.html.twig', [
        'calendar'=> $calendar,
        'startingDay' => $startingDay,
        'weeks' => $weeks,
        'reservationsView_8' => $reservationsView_8,
        'reservationsView_9' => $reservationsView_9,
    ]);
}

}`


probeme avec le demarage du server symfony dans la version 5.0

$
0
0

le probleme de mise a jour avec le package composer require symfony/web-server-bundle sur la version symfony 5 ne marche pas.
j chez moi utiliser cette commande est cela a bien fonctionner bien sur dans le mode --dev**** ainsi s'il y a une autre solution cela est la bienvenue.
composer require symfony/web-server-bundle --dev ^4.4.2

Affichage image .heic, liipimagine et upload

$
0
0

Bonjour a toutes et tous,

Je travaille sur le développement d'une web-app, principalement utilisée avec un smartphone.
Dans mon application, l'utilisateur peut télécharger une photo pour son profil.

Contexte technique: Symfony 4.4, liipimagine bundle.

En gros, mon upload fonctionne parfaitement bien.
Mon problème se situe lors de l'upload d'une photo depuis un iphone : je ne peux pas afficher le fichier .heic via le systeme de filters de liip

J'aimerais pouvoir convertir le fichier .heic, ou simplement l'afficher

Voici mon code :

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

    $uploadedFile = $form['imageFilename']->getData();

    if ($uploadedFile) {

        $newFilename = $uploaderHelper->uploadUserImage($uploadedFile, $currentUser);
        $currentUser->setImageFilename($newFilename);

        $entityManager->persist($currentUser);
        $entityManager->flush();
    }

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

// CLASS UPLOADERHELPER
class UploaderHelper
{
    const USER_IMAGE = 'user_image';

    /** @var string $uploadsPath */
    private $uploadsPath;

    /**
     * @var RequestStackContext
     */
    private $requestStackContext;

    /**
     * UploaderHelper constructor.
     * @param string $uploadsPath
     * @param RequestStackContext $requestStackContext
     */
    public function __construct(string $uploadsPath, RequestStackContext $requestStackContext)
    {
        $this->uploadsPath          = $uploadsPath;
        $this->requestStackContext  = $requestStackContext;
    }

    /**
     * @param UploadedFile $uploadedFile
     * @param Users $user
     * @return string
     */
    public function uploadUserImage(UploadedFile $uploadedFile, Users $user): string
    {
        /** @var string $destination */
        $destination =  $this->uploadsPath . '/' . self::USER_IMAGE;

        /** @var string $originalFilename */
        $originalFilename = pathinfo($uploadedFile->getClientOriginalName(), PATHINFO_FILENAME);

        if ($uploadedFile->guessExtension() == 'heic') {

            // We need to convert the image ?
        }

        /** @var string $newFilename */
        $newFilename = strtolower($user->getName()).'_'.strtolower($user->getSurname()).'-'.uniqid().'.'.$uploadedFile->guessExtension();

        $uploadedFile->move($destination, $newFilename);

        return $newFilename;
    }

    /**
     * @param string $path
     * @return string
     */
    public function getPublicPath(string $path): string
    {
        return $this->requestStackContext->getBasePath() . '/uploads/' . $path;
    }

    // Config liip
liip_imagine:
    # valid drivers options include "gd" or "gmagick" or "imagick"
    driver: "imagick"
    filter_sets:
        squared_thumbnail_small:
            filters:
                thumbnail:
                    size: [200, 200]

   // View
   {% if currentUser.imageFilename %}

<img src="{{ uploaded_asset(currentUser.imagePath)|imagine_filter('squared_thumbnail_small') }}" alt="{{ currentUser.name }} {{ currentUser.surname }}">#}

{% endif %}

Merci pour votre aide

Redirection des routes après connexion

$
0
0

Bonjour,

J'ai créé une fonction roles qui vient s'éxécuter après celle de la connexion car dans ma security.yaml j'emploie default_target_path.

form_login:
                login_path: connexion
                check_path: check
                default_target_path: roles

une fois dans ma fonction roles :

    /**
     * @Route("/roles", name="roles")
     *
     */
    public function roles(UserRepository $repo) : Response
    {
        $user = $this->getUser();
        $person = $repo->findOneBy(['id' => ($user->getId())]);


                      if ($user) 
                      {

                          $role = $person->getRoles();


                          if ($role == 'ROLE_ADMIN') 
                          {
                              return $this->redirectToRoute('membres');
                          } 
                          else
                          {
                              return $this->redirectToRoute('accueil');
                          }

                  }


    }

Il m'est retourné cette erreur (dans l'URL, je suis bien sur /roles)
Return value of App\Controller\UserController::roles() must be an instance of Symfony\Component\HttpFoundation\Response, none returned

Je ne comprends pas, me manque t-il un return ?

Merci par avance pour votre temps ;)

Gestion des rôles et droit d'accès aux routes centralisés

$
0
0

Bonjour,
J'ai suivi le tuto sur la formation symfony 4
J'ai donc deux questions quant à la gestion des rôles.
La première, j'aimerais créer une vue centralisée qui me permettrait pour chaque action (ou route) de lui affecter les rôles souhaitées, je n'ai aucune idée de comment le faire car ce cours est ma toute première interaction avec Symfony.
La deuxième c'est plus une demande d'éclaircissement au niveau de la création des Rôles à savoir si il est possible de laisser aux utilisateurs en fonction de leurs droits (par exemple si ils ont le ROLE_Admin) de créer d'autres types de Rôles différents de ceux de base définis dans le fichier de config.

Modifier le mot de passe

$
0
0

Bonjour,

Je cherche à créer la fonction de la modification du mot de passe
Formulaire typique oldPassword et la repétition de password
J'ai écris un code (qui suit) l'idée est là je pense mais ce qui doit me bloquer c'est l'encodage

public function modificationProfil(User $user, Request $request, UserPasswordEncoderInterface $passwordEncoder)
    {   
             $formPassword = $this->createForm(ResetPasswordType::class, $user);
              $formPassword -> handleRequest($request);

              $passwordActuel  = $user->getPassword();
              dump($passwordActuel);


        if($formPassword->isSubmitted() && $formPassword->isValid())
        {   
                  if($formPassword->get('oldPassword')->getData() === $passwordActuel)
                      {
                          $user->setPassword($passwordEncoder->encodePassword( $user,$formPassword->get('password') ) );

                          $this->getDoctrine()->getManager()->flush();

                          $this->addFlash('notice', 'Votre mot de passe à bien été changé !');

                          return $this->redirectToRoute('profil', array('id' => $user->getId()));
                       }
         }

                 return $this -> render('user/profil_modification.html.twig', [
            'pass' => $formPassword->createView()
        ]);
    }

Quand je lance la page et que je regarde le dump il est écrit un mdp crypté.
je remplie le formulaire ancien et nouveau mdp quand je valide, la page se réactualise et les champs sont vides
je regarde le dump et là je vois mon nouveau mot de passe non crypté (123456)

je refais le code en enlevant le oldPassword et la condition, juste la répétition du password, forcément il est bien modifié
Donc je pense que mon problème est à cause de l'encodeur.

Merci par avance de vos réponses et conseils

Impossible de lancer le serveur

$
0
0

Bonjour,

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

Dès lors que j'execute la commande *php bin/console server:run , afin de lancer le serveur, un erreur apparaît, m'empêchant de lancer le serveur

L'erreur est

Fatal error: Uncaught Symfony\Component\Debug\Exception\ClassNotFoundException: Attempted to load class "Kernel" from namespace "App".
Did you forget a "use" statement for "Symfony\Component\HttpKernel\Kernel"? in C:\wamp\www\Projet_Symfony\bin\console:40
Stack trace:
#0 {main}
  thrown in C:\wamp\www\Projet_Symfony\bin\console on line 40

Le code du fichier console est

#!/usr/bin/env php
<?php

use App\Kernel;
use Symfony\Component\Debug\Debug;
use Symfony\Component\Console\Input\ArgvInput;
use Symfony\Bundle\FrameworkBundle\Console\Application;

if (false === in_array(\PHP_SAPI, ['cli', 'phpdbg', 'embed'], true)) {
    echo 'Warning: The console should be invoked via the CLI version of PHP, not the '.\PHP_SAPI.' SAPI'.\PHP_EOL;
}

set_time_limit(0);

require dirname(__DIR__).'/vendor/autoload.php';

if (!class_exists(Application::class)) {
    throw new RuntimeException('You need to add "symfony/framework-bundle" as a Composer dependency.');
}

$input = new ArgvInput();
if (null !== $env = $input->getParameterOption(['--env', '-e'], null, true)) {
    putenv('APP_ENV='.$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = $env);
}

if ($input->hasParameterOption('--no-debug', true)) {
    putenv('APP_DEBUG='.$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = '0');
}

require dirname(__DIR__).'/config/bootstrap.php';

if ($_SERVER['APP_DEBUG']) {
    umask(0000);

    if (class_exists(Debug::class)) {
        Debug::enable();
    }
}

$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
$application = new Application($kernel);
$application->run($input);

Je précise que j'ai remplacé App/Kernel par Symfony\Component\HttpKernel\Kernel, sans succès une autre erreur m'ait indiqué

Fatal error: Uncaught Symfony\Component\Debug\Exception\FatalThrowableError: Cannot instantiate abstract class Symfony\Component\HttpKernel\Kernel in C:\wamp\www\Projet_GSB\bin\console:40
Stack trace:
#0 {main}
  thrown in C:\wamp\www\Projet_GSB\bin\console on line 40

Merci de votre aide d'avance

Comment fonctionne la méthode get()

$
0
0

Bonjour les amis

Dans un code symfony j'ai le code suivant :

    public function delete(Request $request, Chapitre $chapitre): Response
    {

        // Je récupère l'id de la partie du chapitre
        $id_partie = $chapitre->getPartie()->getId();

        // Je récupère l'id de la formation
        $id_formation = $chapitre->getFormation()->getId();

        if ($this->isCsrfTokenValid('delete'. $chpaitre->getId(), $request->get('_token'))) {

            $entityManager = $this->getDoctrine()->getManager();
            $entityManager->remove($chapitre);
            $entityManager->flush();
            $this->addFlash('success', 'Suppression effectué avec succès');
        }

        return $this->redirectToRoute('chapitre_index',
            [
                'id_partie' => $id_partie,
                'id_formation' => $id_formation
            ]
        );
    }

Dans la condition on applique la propriété $request la méthode get().

La problème c'est null part dans les fichiers de symfony, je ne trouve la définition de la méthode get().

Donc j'en déduis que la méthode get() peut être une méthode native de PHP.

Ai-je raison ou pas ?

De plus si j'ai bien compris, cette méthode s'applique sur les valeur d'un tableau associatif.

Ainsi dans le notre exemple

$request serait un tableau et je récupère la valeur associé à la clé _token

Donc si ma déduction est bonne ? est-ce que cela s'applique sur n"importe quel tableau associatif, notamment ceux que j'aurais défini moi-même ?


Conseil sur les charts / graphiques

$
0
0

Bonjour,
je cherche des conseils pour integrer des graphiques sur symfony vu que je n'est jamais eu l'occation d'en faire,

j'aurais voulu vos avis ou retour,
si vous utilisé un Bundle,
si c'est le cas le quel.

Merci d'avance

Impossible de faire valider la bdd et doctrine [API Rest]

$
0
0

Bonjour,

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

Après avoir cherché sur de multiples forums et sans avoir trouvé la solution je m'adresse à vous tous.

Je suis actuellement en stage, et j'ai comme mission de créer une API Rest avec Symfony en utilisant api_platform. La base de données de mon entreprise contient plus de 100 tables, j'ai donc utilisé la méthode "base first" qui consiste à importer les entités de la base de données dans mon projet (avec cette commande : s doctrine:mapping:import App\Entity annotation --path=src/Entity).

Ensuite, il faut que m’assure que la BDD et Doctrine ont les mêmes informations et j'utilise cette commande : s doctrine:schema:validate et j'obtiens ce message d'erreur :

[ERROR] The database schema is not in sync with the current mapping file. 

Après j'ai donc essayé de faire : s doctrine:schema:update --force (et s doctrine:schema:update --force --complete, mais j'obtiens la même chose) pour mettre à jour les informations et j'obtiens une autre erreur :

In AbstractMySQLDriver.php line 49:

  An exception occurred while executing 'ALTER TABLE accounting ADD CONSTRAIN  
  T FK_6DC501E5F4DD95F7 FOREIGN KEY (movement) REFERENCES animalmovement (id)  
  ':                                                                           

  SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update   
  a child row: a foreign key constraint fails (`test`.`#sql-318c_1c7`, CONSTR  
  AINT `FK_6DC501E5F4DD95F7` FOREIGN KEY (`movement`) REFERENCES `animalmovem  
  ent` (`id`))                                                                 


In PDOConnection.php line 80:

  SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update   
  a child row: a foreign key constraint fails (`test`.`#sql-318c_1c7`, CONSTR  
  AINT `FK_6DC501E5F4DD95F7` FOREIGN KEY (`movement`) REFERENCES `animalmovem  
  ent` (`id`))                                                                 


In PDOConnection.php line 75:

  SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update   
  a child row: a foreign key constraint fails (`test`.`#sql-318c_1c7`, CONSTR  
  AINT `FK_6DC501E5F4DD95F7` FOREIGN KEY (`movement`) REFERENCES `animalmovem  
  ent` (`id`))                                                                 

J'ai également testé avec seulement 10 entités mais j'obtiens le même résultat :

[ERROR] The database schema is not in sync with the current mapping file. 

Je sollicite votre aide car j'aimerais bien que la BDD et doctrine aient les mêmes informations pour ensuite continuer.
Merci d'avance.

formulaire plusieurs entity

$
0
0

Bonjour,

J'aimerais un conseil,
J'ai lié 3 entity, User, Produit et Annonce
je crée un formulaire se reposant sur l'entity Annonce,

Mon problème est que j'aimerais faire un choiceType, qui sélectionne dans mon entity Produit uniquement ceux du $user connecté.

Peut-on imbriquer un choiceType dans un autre ?

Formulaire avec une collection bien spécifique

$
0
0

Bonjour à tous,

J'ai ici un petit problème un peu particulier.

Voici la structure de mes entités dont le but est de constituer un tableau avec des colonnes, des lignes et des données croisées

MonTableau OneToMany MesLignes
MonTalbeau OneToMany MesColonnes
MesDonnees OneToOne MaLigne et OneToOne MaColonne

Le tout dans l'optique de créer un tableau ressemblant à ceci :
MaColonne1 MaColonne2
MaLigne n°1 Donnée11 Donnée 12
MaLigne n°2 Donnée21 Donnée 22
MaLigne n°3 Donnée31 Donnée 32

J'ai créer un formulaire qui me permet d'éditer toutes mes données en une seule fois. Cela fonctionne impeccablement.

Là où je veux en venir, c'est d'éditer uniquement le contenu de MaColonne2 !
Alors, j'ai un formulaire qui fonctionne et qui m'affiche correctement MaColonne2 et mon formulaire est validé !
Hic : le contenu de MaColonne1 est effacé !
Il faut que j'ai mis le render_rest à false !

Serait-il possible d'avoir un équivalant avec "query_builder" pour un collectiontype ???

Merci beaucoup pour votre aide.

:)

Gestion des rôles et droit d'accès aux routes centralisés

$
0
0

Bonjour,
J'ai suivi le tuto sur la formation symfony 4
J'ai donc deux questions quant à la gestion des rôles.
La première, j'aimerais créer une vue centralisée qui me permettrait pour chaque action (ou route) de lui affecter les rôles souhaitées, je n'ai aucune idée de comment le faire car ce cours est ma toute première interaction avec Symfony.
La deuxième c'est plus une demande d'éclaircissement au niveau de la création des Rôles à savoir si il est possible de laisser aux utilisateurs en fonction de leurs droits (par exemple si ils ont le ROLE_Admin) de créer d'autres types de Rôles différents de ceux de base définis dans le fichier de config.

Viewing all 1542 articles
Browse latest View live