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

Créer un système de widget

$
0
0

Bonjour,

Voilà, je souhaiterai pouvoir implémenter un système de widget sur mon site fait avec Symfony.
J'aimerais que ce système récupère des informations dans ma base de données (ex: un widget TeamSpeak qui va récuperer dans la bdd toutes les lignes qui contiennent les ip, port et d'autre éventuelles informations uniquement pour les widget teamspeak. Et va executer une même fonction plusieurs selon le nombre de ligne récuperer en utilisant les informations et qui renverra plusieurs card bootstrap qui afficheront les différent serveur)
avec une gestion actif/inactif. Mais j'ai rien trouver pour m'aider a faire ça :/ Si quelqu'un a une piste ou a déjà fait ce genre de système ça serait super ! Cordialement.


Easyadmin relation order by

$
0
0

Bonjour,

J'ai créer une petite partie administration avec une entité items et une entité country.
C'est une relation OneToMany. J'arrive à trier les listes sans problèmes mais je ne trouve pas comment trier par ordre alphabétique le select2 "country" de la page de création d'un entité "Items"

Merci pour vos retours

Form validation toujours true

$
0
0

Bonjour,

J'ai un problème avec la validation des forms. isValid() renvoie toujours true et les asserts ne sont pas pris en compte.

J'utilise "Symfony\Component\Validator\Constraints". Ca fait des jours que je cherche je ne comprends vraiment pas ..

mon entité (je teste uniquement titre):

<?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert; 
/**
 * @ORM\Entity(repositoryClass="App\Repository\PostRepository")
 */
class Post
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=10, nullable=true)
    * @Assert\Length(min="5", max="10", minMessage="Le titre doit faire au moins {{ limit }} caractères.", maxMessage="Le titre doit faire au plus {{ limit }} caractères.")
     */    
    private $title;    

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

    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\Category", inversedBy="post")
     */
    private $Category;

    /**
     * @ORM\Column(type="integer")
     */
    private $idPosteur;

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

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

    /**
     * @ORM\Column(type="integer", nullable=true)
     */
    private $price;

    /**
     * @ORM\Column(type="integer", nullable=true)
     */
    private $type;

    /**
     * @ORM\Column(type="datetime", nullable=true)
     */
    private $duration;

    /**
     * @ORM\Column(type="integer", nullable=true)
     */
    private $subCat;

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

    /**
     * @ORM\ManyToOne(targetEntity=User::class, inversedBy="posts")
     * @ORM\JoinColumn(nullable=false)
     */
    private $user;

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

    public function getTitle(): ?string
    {
        return $this->title;
    }

    public function setTitle(?string $title): self
    {
        $this->title = $title;

        return $this;
    }

    public function getImage(): ?string
    {
        return $this->image;
    }

    public function setImage(?string $image): self
    {
        $this->image = $image;

        return $this;
    }

    public function getCategory(): ?Category
    {
        return $this->Category;
    }

    public function setCategory(?Category $Category): self
    {
        $this->Category = $Category;

        return $this;
    }

    public function getIdPosteur(): ?int
    {
        return $this->idPosteur;
    }

    public function setIdPosteur(int $idPosteur): self
    {
        $this->idPosteur = $idPosteur;

        return $this;
    }

    public function getDescription(): ?string
    {
        return $this->description;
    }

    public function setDescription(string $description): self
    {
        $this->description = $description;

        return $this;
    }

    public function getLocation(): ?string
    {
        return $this->location;
    }

    public function setLocation(?string $location): self
    {
        $this->location = $location;

        return $this;
    }

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

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

        return $this;
    }

    public function getType(): ?int
    {
        return $this->type;
    }

    public function setType(?int $type): self
    {
        $this->type = $type;

        return $this;
    }

    public function getDuration(): ?\DateTimeInterface
    {
        return $this->duration;
    }

    public function setDuration(?\DateTimeInterface $duration): self
    {
        $this->duration = $duration;

        return $this;
    }

    public function getSubCat(): ?int
    {
        return $this->subCat;
    }

    public function setSubCat(?int $subCat): self
    {
        $this->subCat = $subCat;

        return $this;
    }

    public function getPaiement(): ?string
    {
        return $this->paiement;
    }

    public function setPaiement(?string $paiement): self
    {
        $this->paiement = $paiement;

        return $this;
    }

    public function getUser(): ?User
    {
        return $this->user;
    }

    public function setUser(?User $user): self
    {
        $this->user = $user;

        return $this;
    }
}

Merci d'avance pour votre aide, je bloque totalement,

Bonne journée

symfony probleme

$
0
0

Bonjour,

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

jarrive a rien faire suis debutant

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

E<?php
   namespace App\Controller;

        use Symfony\Component\HttpFoundation\Response;

        class HomeController extends AbstractController{
            /*
             * @var Environement
             */
           private $twig;

            public function _construct($twig){
                $this->twig =$twig;
            }


            public function index(): Response
            {
                Return new Response($this->twig->render('pages/home.html.twig'));
            }

        }ntourez votre code pour bien le mettre en forme

Ce que je veux

je voulais charger la page

Ce que j'obtiens

Argument 1 passed to Symfony\Component\DependencyInjection\Definition::setArguments() must be of the type array, string given, called in C:\Apache24\htdocs\MaSuperAgence\vendor\symfony\dependency-injection\Loader\YamlFileLoader.php on line 500

Symfony Erreur 404 suite mise en production

$
0
0

Bonjour,

Voila je rencontre un petit problème suite à la mise en production d'une application symfony

Ce que je fais

J'ai créé un site avec Symfony sur ma machine.

Ce que je veux

J'aimerais pouvoir lancer cette application depuis mon serveur OVH qui contient déjà d'autres applications (dont un Wordpress à la racine)

Le code est donc stocké dans \var\www\myapp et je voudrais y acceder en utilisant l'URL mondomaine.fr/myapp.

La racine de mondomaine.fr me redirigeant vers le wordpress.

PS: J'ai déjà une applis en PHP pure qui tourne avec ce fonctionnement et aucun soucis... je pense donc que ça vient des réécriture d'URL mais pas moyen de m'en sortir avec les htaccess

Ce que j'obtiens

Tout fonctionne parfaitement en local lorsque j'utilise la commande "php -S 127.0.0.1:8000 -t public" mais j'ai systèmatiquement une erreur 404 lorsque j'essaye de lancer le site via une URL sur Xampp ...

Je me connecte sur "localhost/myapp" et il me redirige bien sur "localhost/myapp/login" ce qui veux dire que le php s'execute bien. J'ai exactement le même comportement sur mon serveur OVH, je me connecte sur monserveur.fr/myapp il me redirige bien sur monserveur.fr/myapp/login mais toujours avec cette erreur 404.

Merci d'avance pour votre aide.

Symfony probleme de DoctrineFixturesBundle

$
0
0

Bonjour,

je voudrais installer la DoctrineFixturesBundle,
apres cette commande : composer require --dev orm-fixtures

un nouveau dossier dans le dossier src,
appelé dossier DataFixtures a été crée
• Une nouvelle classe est créée dans ce dossier, elle porte le
nom AppFixtures.php

MAIS LE PROBlèME C'est que la méthode de cette classe contient le paramétre ObjectManager $manager
qui est souligné en rouge et je ne sais pas pourquoi

     public function load(ObjectManager $manager)
{
    for ($i=0;$i<=10;$i++){
        $article=new Article();
        $article->setTitle("titre de l'article")
            ->setContent("je suis un contenu");
        $manager->persist($article);
    }
    $manager->flush();
}

Impossible retirer element image a patir formulaire annonce

$
0
0

Bonjour,
Je cherche a supprimer une image presente dans mon forme annonce
ayant pour cela dans adtype mis ma collection images a allow_delete.
Mon javascript supprime bien le tag visé par le bouton supprimer.
Le dump me renvoie bien le tableau d'image avec le nb d'elements conservé mais a l'affichage de mon getAnnonce toutes les images sont presentes y compris en bdd et je n'ai aucun message d'erreur.
A l'inverse l'ajout d'image fonctionne tres bien
Je suis sur Symfony 5
Merci d'avance

Ad/Entity

<?php

namespace App\Entity;

use App\Entity\Image;
use Cocur\Slugify\Slugify;
use App\Repository\AdRepository;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\Collection;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;

/**
 * @ORM\Entity(repositoryClass=AdRepository::class)
 * @ORM\HasLifecycleCallbacks()
 * @UniqueEntity(
 *  fields = {"title"},
 *  message ="Une autre annonce à déjà ce titre merci de la modifier"
 * )
 */
class Ad
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * title
     *
     * @ORM\Column(type="string", length=255)
     *
     *@Assert\Length(
     * min=10,
     * max=50,
     * minMessage="Le titre doit au minimum contenir {{ limit }} caractères",
     * maxMessage="Le titre ne peut contenir plus de {{ limit }} caractères"
     *)
     * @var string
     */
    private $title;

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

    /**
     * @ORM\Column(type="float")
     *
     * @Assert\NotNull
     * @Assert\Regex(
     * pattern = "/(^[0-9]+)\W?([0-9]{0,2}$)/i",
     * match=true,
     * message ="Le prix ne peut contenir que des nombres")
     *
     */
    private $price;

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

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

    /**
     * @ORM\Column(type="string", length=255)
     *
     * @Assert\Url( message="l'url {{ value }}saisi n'est pas correcte")
     */
    private $coverImage;

    /**
     * @ORM\Column(type="integer")
     */
    private $rooms;

    /**
     * @ORM\OneToMany(targetEntity=Image::class, mappedBy="ad", cascade={"persist"})
     *
     * @Assert\Valid
     */
    private $images;

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

    /**
     * This function initialize a new slug in case is  empty
     *
     * @return void
     *
     * @ORM\PrePersist
     * @ORM\PreUpdate
     */
    public function initializeSlug()
    {
        if (empty($this->slug)) {
            $slugTitle = new Slugify();
            $this->setSlug($slugTitle->slugify($this->title));
        }
    }

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

    public function getTitle(): ?string
    {
        return $this->title;
    }

    public function setTitle(string $title): self
    {
        $this->title = $title;

        return $this;
    }

    public function getSlug(): ?string
    {
        return $this->slug;
    }

    public function setSlug(string $slug): self
    {
        $this->slug = $slug;

        return $this;
    }

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

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

        return $this;
    }

    public function getIntroduction(): ?string
    {
        return $this->introduction;
    }

    public function setIntroduction(string $introduction): self
    {
        $this->introduction = $introduction;

        return $this;
    }

    public function getContent(): ?string
    {
        return $this->content;
    }

    public function setContent(string $content): self
    {
        $this->content = $content;

        return $this;
    }

    public function getCoverImage(): ?string
    {
        return $this->coverImage;
    }

    public function setCoverImage(string $coverImage): self
    {
        $this->coverImage = $coverImage;

        return $this;
    }

    public function getRooms(): ?int
    {
        return $this->rooms;
    }

    public function setRooms(int $rooms): self
    {
        $this->rooms = $rooms;

        return $this;
    }

    /**
     * @return Collection|Image[]
     */
    public function getImages(): Collection
    {
        return $this->images;
    }

    public function addImage(Image $image): self
    {
        if (!$this->images->contains($image)) {
            $this->images[] = $image;
            $image->setAd($this);
        }

        return $this;
    }

    public function removeImage(Image $image): self
    {
        if ($this->images->contains($image)) {
            $this->images->removeElement($image);
            //set the owning side to null (unless already changed)
            if ($image->getAd() === $this) {
                $image->setAd(null);
            }
        }

        return $this;
    }

    /**
     * Set the value of images
     *
     * @return  self
     */
    public function setImages(?ArrayCollection $images)
    {
        $this->images = $images;
    }
}

Image/Entity

<?php

namespace App\Entity;

use App\Repository\ImageRepository;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;

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

    /**
     * @ORM\Column(type="string", length=255)
     *
     * @Assert\Url(message="Ceci n'est pas une url valide veuillez la modifier merci!")
     */
    private $url;

    /**
     * @ORM\Column(type="string", length=255)
     *
     * @Assert\Length(min=10, minMessage="Le titre doit faire au moins {{ limit }} caractères")
     */
    private $caption;

    /**
     * @ORM\ManyToOne(targetEntity=Ad::class, inversedBy="images")
     * @ORM\JoinColumn(nullable=false)
     */
    private $ad;

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

    public function getUrl(): ?string
    {
        return $this->url;
    }

    public function setUrl(string $url): self
    {
        $this->url = $url;

        return $this;
    }

    public function getCaption(): ?string
    {
        return $this->caption;
    }

    public function setCaption(string $caption): self
    {
        $this->caption = $caption;

        return $this;
    }

    public function getAd(): ?Ad
    {
        return $this->ad;
    }

    public function setAd(?Ad $ad): self
    {
        $this->ad = $ad;

        return $this;
    }
}

Ma View Twig

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

{% block title %}{{titre}}{% endblock %}
{% form_theme form _self %}
{% block body %}
<h1 class="text-center mb-5 pb-5 border-bottom border-grey mx-auto">{{titre}}</h1>
{{ form_start(form, {'attr':{'class':'form-group'}}) }}
{{ form_widget(form) }}
    <div class="d-flex justify-content-end">
        <input type="submit" class="btn btn-primary form-group" 
        {% if button_label is defined %} 
            value="{{ button_label }}" 
        {% else %} 
            value="Créer cette annonce"
        {% endif %} >
    </div>
{{ form_end(form) }}
{% endblock %}
{% block _ad_images_widget %}
    <p>Utlisez ces champs pour rajouter des images</p>
    {{form_widget(form)}}
<div class="form-group">
    <button type="button"
             name=""
             id="btn-add" 
             class="btn btn-primary ">
        Ajouter une image
    </button>
</div>
{% endblock %}

{# suppression des labels des champs dans twig #}
{# {cette suppression est commentée car réalisée dans les options du form} #}
{# {% block _ad_images_entry_label %}
    {{form_label(form,null,{'label_attr':{'class':'d-none'}})}}
{% endblock %} #}

{% block _ad_images_entry_widget %}
<div class="row">
    <div class="col d-inline">
    {{ form_errors(form.caption) }}
    {{ form_widget(form.caption) }}
    </div>
    <div class="col d-inline">
    {{ form_errors(form.url) }}
    {{ form_widget(form.url) }}
    </div>
    <div class="col d-inline">
        <button type='button' class="btn btn-danger btn-delete">
                Supprimer
        </button>
    </div>
</div>
{% endblock %}

{% block javascripts %}
<script>
$(document).ready(function(){

// Add an image when newImage addbutton is typed

    $(document).on('click','#btn-add',function(){

        let tmpl = $('#ad_images').data('prototype').replace(/__name__/g,count);
        $('#ad_images').append(tmpl);
    });

// Delete the image choosed by the  user when press delete button

    $(document).on('click','.btn-delete',function(e){
            let result = confirm('Confirmez-vous la suppression de cette image ?');
                if (result == true){
                    if ($(this).closest('fieldset.form-group').attr('id')){
                        $(this).closest('fieldset.form-group').remove();
                    } else {
                        $('fieldset.form-group:last').remove();
                    }
                }
    });

    function count(){
        let count = $('#ad_images .row').length;
        for(let i=0;i<=count;i++){
            if(!$('fieldset.form-group:nth-child('+i+')').attr('id')){
                $('fieldset.form-group:nth-child('+i+')').attr('id', "block_"+i);
            }
        }
    }
    count();
});
</script>
{% endblock %}

Ma Method dans le controller

     /**
    * This method edit the choosen ad form to be modifyed
    *
    * @Route("/ad/edit/{slug}", name="edit_ad")
    *
    * @return Ad
    */
    public function editAction(Request $request, Ad $ad, EntityManagerInterface $manager)
    {

        $form = $this->createForm(AdType::class, $ad);
        $form->handleRequest($request);
        if ($form->isSubmitted() && $form->isValid()) {
            foreach ($ad->getImages() as $image) {
                $image->setAd($ad);
                $manager->persist($image);
            }
            $manager->persist($ad);
            $manager->flush();
            $this->addFlash('success', "Les modifications de l'annonce ont bien été prises en compte");
            return $this->redirectToRoute('get_ad', ["slug"=>$ad->getSlug()]);
        }
        return $this->render(
            "ad/forms_ad.html.twig",
            [
            'titre'=>'Modification de l\'annonce: '.$ad->getTitle(),
            'button_label'=> "Modifier cette annonce",
            'ad'=>$ad,
            'form'=>$form->createView()
            ]
        );
    }

Mon FormType Annonce

<?php

namespace App\Form;

use App\Entity\Ad;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\MoneyType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\Extension\Core\Type\UrlType;

class AdType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add(
                'title',
                TextType::class,
                $this->getConfiguration("Titre de l'annonce", 'Saisissez votre titre')
            )
            ->add(
                'introduction',
                TextType::class,
                $this->getConfiguration("Brève présentation", 'Petite phrase d\'introduction')
            )
            ->add(
                'coverImage',
                UrlType::class,
                $this->getConfiguration("Image de couverture", 'Url de l\'image de couverture')
            )
            ->add(
                'content',
                TextType::class,
                $this->getConfiguration("Contenu de l'annonce", 'Saisissez un contenu complet pour l\'annonce')
            )
            ->add(
                'price',
                MoneyType::class,
                $this->getConfiguration("Prix de la location / nuit", 'Saisissez le prix par nuit')
            )
            ->add(
                'rooms',
                IntegerType::class,
                $this->getConfiguration("Nombre de chambres à proposer", 'De combien de chambres disposez-vous ?')
            )
            ->add(
                'images',
                CollectionType::class,
                [
                'label'=>"Images complémentaires",
                'label_attr'=>["class"=>"font-weight-bold border-top my-4 border-grey"],
                'entry_type'=> ImageType::class,
                'entry_options'=>['label'=>false],
                'allow_add'=> true,
                'allow_delete' => true
                ]
            )
        ;
    }

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

    /**
     * This function returns the label and the placeholder for each field
     *
     * @param string $label
     * @param string $placeholder
     * @return array
     */
    private function getConfiguration(string $label, string $placeholder, $required = true):array
    {
        return [
            'required'=>$required,
            'label'=>$label,
            'attr'=>[
            'placeholder'=>$placeholder
            ]
        ];
    }
}

Mon Form Image

<?php

namespace App\Form;

use App\Entity\Image;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\UrlType;
use Symfony\Component\Form\Extension\Core\Type\TextType;

class ImageType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add(
                'url',
                UrlType::class,
                [
                    'attr'=>["placeholder"=>"Url de l'image"]
                ]
            )
            ->add(
                'caption',
                TextType::class,
                [
                    'attr'=>["placeholder"=>"Nom de l'image"]
                ]
            )
        ;
    }

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

Problème de deserialize

$
0
0

Bonjour,

Voila je rencontre un petit problème avec mon code, j'utilise pour la première fois une API et je n'arrive pas à afficher les données de cette API.

/**
* @Route("/listeRegion", name="listeRegion", methods={"GET"})
*/
public function listeRegion(SerializerInterface $serializer)
{
$mesRegions = file_get_contents('https://geo.api.gouv.fr/regions');
$mesRegions = $serializer->deserialize($mesRegions, App\Entity\Region[], JSON);
return $this->render('api/index.html.twig', [
'mesRegions' => $mesRegions
]);
}

Ce que je veux

Je souhaite afficher une page comprenant toutes les régions françaises.

Ce que j'obtiens

Argument 2 passed to Symfony\Component\Serializer\Serializer::deserialize() must be of the type string, null given


Upgrade symfony 2.8 ? ou refaire en symfony 4 ?

$
0
0

Bonjour,

J’hérite d'une application en symfony 2.8.
Votre avis: je fait un upgrade vers version 3.4 puis ensuite vers 4 ... ou je repars d'une version 4 vierge à laquelle j’ajoute progressivement des fonctionnalités en reprenant une partie du code existant.

A votre avis qu'elle sera la plus rapide des méthodes ? ou y a t il une autre solutions ?
Je n'ai pas encore vu le code ...

Merci de m'avoir lu.

Afficher le contenu par rapport à l'id

$
0
0

Bonjour,

Voilà, je rencontre un petit problème avec mon code et je débute à peine avec Symfony.

Je crée un quiz avec des questionnaires, dans les questionnaires, il y a des questions et les questions ont des réponses.
Sur la page questionnaire, j'ai des titres (liens) qui mènent chacun a leurs questions, sauf que pour le moment, il m'affiche toutes les questions de n'importe quelle questionnaire et la même chose pour les réponses, quand je clique sur le liens de la question, j'ai toutes les réponses de toutes les questions.

J'avais pensé faire une fonction dans le QuestionController avec des tableaux pour l'affichage, mais je ne sais pas trop comment mis prendre ( $responses = [$question => 'reponse ' ];) ou peut-être, il faut que je mette autres choses à la place de "findAll()" pour les reponses.

/**
 * @Route("/question")
 */
class QuestionController extends AbstractController
{
    /**
     * @Route("/", name="question_index", methods={"GET"})
     */
    public function index(QuestionRepository $questionRepository, ReponseRepository $reponseRepository): Response
    {
        return $this->render('question/index.html.twig',[
            'questions' => $questionRepository->findAll(),
            'reponses' => $reponseRepository->findAll(),
        ]);
    }
<?php

namespace App\Entity;

use App\Repository\QuestionRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;

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

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

    /**
     * @ORM\ManyToOne(targetEntity=TypeDeQuestion::class, inversedBy="questions")
     * @ORM\JoinColumn(nullable=false)
     */
    private $typeDeQuestion;

    /**
     * @ORM\OneToMany(targetEntity=Reponse::class, mappedBy="question")
     */
    private $reponses;

    /**
     * @ORM\ManyToOne(targetEntity=Questionnaire::class, inversedBy="questions")
     * @ORM\JoinColumn(nullable=false)
     */
    private $Questionnaire;

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

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

    public function getLibelleQuestion(): ?string
    {
        return $this->libelleQuestion;
    }

    public function setLibelleQuestion(string $libelleQuestion): self
    {
        $this->libelleQuestion = $libelleQuestion;

        return $this;
    }

    public function getTypeDeQuestion(): ?TypeDeQuestion
    {
        return $this->typeDeQuestion;
    }

    public function setTypeDeQuestion(?TypeDeQuestion $typeDeQuestion): self
    {
        $this->typeDeQuestion = $typeDeQuestion;

        return $this;
    }
    public function getQuestionnaire(): ?Questionnaire
    {
        return $this->Questionnaire;
    }

    public function setQuestionnaire(?Questionnaire $Questionnaire): self
    {
        $this->Questionnaire = $Questionnaire;

        return $this;
    }
    /**
     * @return Collection|Reponse[]
     */
    public function getReponses(): Collection
    {
        return $this->reponses;
    }

    public function addReponse(Reponse $reponse): self
    {
        if (!$this->reponses->contains($reponse)) {
            $this->reponses[] = $reponse;
            $reponse->setQuestion($this);
        }

        return $this;
    }

    public function removeReponse(Reponse $reponse): self
    {
        if ($this->reponses->contains($reponse)) {
            $this->reponses->removeElement($reponse);
            // set the owning side to null (unless already changed)
            if ($reponse->getQuestion() === $this) {
                $reponse->setQuestion(null);
            }
        }

        return $this;
    }
    public function __toString() {
    return $this->getLibelleQuestion();
    }
}

htaccess dans symfony je comprends que dalle à la syntaxe

$
0
0

Bonjour,

Voila je rencontre un petit problème avec symfony mais surtout le gichier htaccess, je voudrais savoir si il en faut un par dossier pour protéger l'accès que dois je mettre pour les redirections url par la suite http => https, et à quoi sert le tilde dans les Regexp ,et je ne le retrouve pas lui et son explication.
Que dois je écrire dans le htaccess pour que je puisse écrire dans un fichier protégé à partir d'un module qui permet de sauvegarder des données utilisateur nom , message , ip date ect...

Pourriez vous maider ?

Connection a Facebook avec fichier yaml ?

$
0
0

Bonjour,

je créer ce suje afin d'avoir une réponse à ma question, car impossible de trouver une réponse sur le net...

Ce que je fais

Je cherche à créer un site pour une entreprise individuelle grâce à Symfony. La personne n'ayant pour le moment pas de site internet, elle se contente de poster ses créations sur son compte facebook.

Ce que je veux

Ce que j'aimerais pouvoir réaliser c'est récupérer les photos que la personne poste sur facebook (dans un album spécifique) afin de les récupérer et les afficher sur son site, afin d'éviter de devoir les upload sur Fb et sur le site.
Pour cela, je suis conscient qu'il faut se connecter à facebook. Maintentant voila, je ne cherche pas à créer une authentification fb pour les utilisateurs, mais plutot une authentification en config de mon code, afin de pouvoir manipuler les données de facebook liées au profil de mon client.
Pensez-vous qu'il est possible de paramétrer une connexion à FB via un fichier yaml? par exemple le fichier contiendrait les identifiants secrets (mdp et id cryptés ou non) du compte fb à utiliser.

En espérant que certains auront la réponse, Merci d'avance.

les id

$
0
0

Bonjour,

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

J'ai cette url :quizz/public/question/?id=1
Quand je vais sur mon lien de la question avec l'id 4 pour voir mes réponses
J'obtiens cette url :quizz/public/reponse/?id=4
J'obtiens bien que les réponses de la question avec se code :

/**
 * @Route("/reponse")
 */
class ReponseController extends AbstractController
{
    /**
     * @Route("/", name="reponse_index", methods={"GET"})
     */
    public function index( QuestionRepository $questionRepository, ReponseRepository $reponseRepository, Request $request): Response
    {
        // rechercher plusieurs objets reponse correspondant au question
        // dump($request->query->get('id'));
        $reponses = $reponseRepository->findBy(['question' => $request->query->get('id')]);
        return $this->render('reponse/index.html.twig', [
            // Afficher que les réponses par rapport à son IdQuestion!!!
            'reponses' => $reponses,

        ]);
    }

Par contre quand je fais retour à la page, j'obtiens : quizz/public/question/, mon id disparaît et ne m'affiche plus mes questions.
Du coup, j'ai su afficher du questionnaire, ces questions avec la clez étrangère "questionnaire_id" et pareil pour les réponse avec la clef étrangère "question_id" mais je n'arrive pas à aller dans le sens inverse.

Création de ma propre API

$
0
0

Bonjour,

Voila je rencontre un petit problème avec mon code. J'utilise Symfony 5.

Ce que je fais

Je crée ma premiere api et je souhaite afficher le résultat en JSON dans un premier temps.

@Route("/api/genres", name="api_genres", methods={"GET"})
*/
public function list(GenreRepository $repo, SerializerInterface $serializer)
{

    $genres = $repo->findAll();
    $resultat = $serializer->serialize($genres, 'json', ['groups' => 'listeGenreFull']);
    return new JsonResponse($resultat, 200,[],true);
}

Ce que je veux

Je souhaite affiché les données en JSON or je ne vois que des tableaux vides.

Ce que j'obtiens

[[],[],[],[],[],[],[]]

Problème de deserialize

$
0
0

Bonjour,

Voila je rencontre un petit problème avec mon code, j'utilise pour la première fois une API et je n'arrive pas à afficher les données de cette API.

/**
* @Route("/listeRegion", name="listeRegion", methods={"GET"})
*/
public function listeRegion(SerializerInterface $serializer)
{
$mesRegions = file_get_contents('https://geo.api.gouv.fr/regions');
$mesRegions = $serializer->deserialize($mesRegions, App\Entity\Region[], JSON);
return $this->render('api/index.html.twig', [
'mesRegions' => $mesRegions
]);
}

Ce que je veux

Je souhaite afficher une page comprenant toutes les régions françaises.

Ce que j'obtiens

Argument 2 passed to Symfony\Component\Serializer\Serializer::deserialize() must be of the type string, null given


problème avec swift mailer symfony 4

$
0
0

Bonjour,

J'utilise swifmailer pour l'envoie des emails mais en vain

J'ai suivi à la lettre la documentation sur le site officiel de symfony , j'utilise la version 4.3

Concenrant le fichier .env :

MAILER_URL=smtp://mail.fff.com:587?encryption=tls&auth_mod=login&username=no-reply@fff.com&password=0tJflR(L5k@o^
PS: j'ai utlisé tous les modes d'encryption ssl tls

Y'a aucune erreur qui s'affiche , j'ai comme message : *sent message : 1 default message 1 spooled *

Merci d'avance

Problème de deserialize

$
0
0

Bonjour,

Voila je rencontre un petit problème avec mon code, j'utilise pour la première fois une API et je n'arrive pas à afficher les données de cette API.

/**
* @Route("/listeRegion", name="listeRegion", methods={"GET"})
*/
public function listeRegion(SerializerInterface $serializer)
{
$mesRegions = file_get_contents('https://geo.api.gouv.fr/regions');
$mesRegions = $serializer->deserialize($mesRegions, App\Entity\Region[], JSON);
return $this->render('api/index.html.twig', [
'mesRegions' => $mesRegions
]);
}

Ce que je veux

Je souhaite afficher une page comprenant toutes les régions françaises.

Ce que j'obtiens

Argument 2 passed to Symfony\Component\Serializer\Serializer::deserialize() must be of the type string, null given

createForm

$
0
0

Hello,

je comprends pas trop l'erreur que je recois au moment ou je fais un createForm :

The property "App\Component\Planning\Planning::$name" is not readable because it is typed "string". You should initialize it or declare a default value instead.

je fais un :

$planning = new Planning();
$form = $this->createForm(PlanningType::class, $planning);

mon entity Planning :

/**
 * @ORM\Entity(repositoryClass=PlanningRepository::class)
 * @ORM\Table(name="`plannings`")
 * @ORM\HasLifecycleCallbacks
 */
class Planning
{
    use TimestampableTrait;
    use SoftDeletableTrait;

    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private int $id;

    /**
     * @ORM\Column(type="string", length=180)
     * @Assert\NotBlank()
     */
    private string $name;

    /**
     * @ORM\Column(type="string", length=180, unique=true)
     * @Assert\NotBlank()
     */
    private string $slug;

    /**
     * @ORM\Column(type="text")
     */
    private ?string $description;

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

    /**
     * @return mixed
     */
    public function getName(): string
    {
        return $this->name;
    }

    /**
     * @param mixed $name
     */
    public function setName($name): void
    {
        $this->name = $name;
    }

    /**
     * @return mixed
     */
    public function getSlug(): string
    {
        return $this->slug;
    }

    /**
     * @param mixed $slug
     */
    public function setSlug($slug): void
    {
        $this->slug = $slug;
    }

    /**
     * @return mixed
     */
    public function getDescription(): ?string
    {
        return $this->description;
    }

    /**
     * @param mixed $description
     */
    public function setDescription($description): void
    {
        $this->description = $description;
    }
}

PlanningType :

class PlanningType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options): void
    {
        $builder
            ->add('name')
            ->add('slug')
            ->add('description');
    }

    /**
     * @param OptionsResolver $resolver
     */
    public function configureOptions(OptionsResolver $resolver): void
    {
        $resolver->setDefaults([
            'class' => Planning::class
        ]);
    }
}

Je identifié que c'est le $name qui pose probleme car il est uninitialized(string) dans mon entity et que c'est au niveau du createForm mais je ne comprend pas comment resourdre l'erreur. Un petit coup de main ?

Merci

Faire une recherche d'un mot dans plusieurs colonnes

$
0
0

Bonjour,

Voila je cherche implement a faire une recherche dans plusieurs table d'une base de données, avec une recherche par mot clef.
J'ai le code ci dessous qui fonctionne parfaitemement, il recherche pour l'instant dans une colonne (title) et il cherche le mot n'import ou dans la phrase.

public function search($search) {
    $qb = $this->createQueryBuilder('p')
    ->where('p.title LIKE :title')
    ->setParameter('title', '%'.$search.'%')
    ->orderBy('p.title', 'ASC');

return $qb->getQuery()->getResult();
}

J'aimerai simplement effectuer en meme temp une recherche aussi dans la colonne (description) et (mot_clef).

Quelqu'un peut-il m'aider ?

URL n'est pas généré correctement

$
0
0

Bonjour,

Je suis en train de suivre le tutoriel Symfony 4 par l'exemple sauf que je le fais sous Symfony 5 et j'ai un problème au niveau des URL générées.

Ce que je fais

J'ai écrit la route en annotation

    /**
     * @Route("/biens/{slug}-{id}", name="property.show", requirements={"slug": "[a-z0-9\-]*"})
     * @param Property $property
     * @return Response
     */
    public function show(Property $property, string $slug): Response
    {   
        return $this->render('property/show.html.twig', [
                'property' => $property,
                'current_menu' => 'properties'
            ]);
    }

Et j'ai ce lien sur la page d'accueil comme expliqué dans la vidéo 3 (découverte de Doctrine)

<a href="{{ path('property.show', {id: property.id, slug: property.slug}) }}">{{ property.slug }}</a>

Ce que je veux

Le lien devrait renvoyer vers /biens/mon-premier-bien-1

Ce que j'obtiens

L'URL générée est /mon-premier-bien/biens/-1. Je n'arrive pas à comprendre d'où vient le problème. J'ai fait un debug:router et un debug:matches et les routes sont ok. J'accède bien à la page si j'écris manuellement /biens/mon-premier-bien-1. J'ai vérifié si le {{ property.slug }} existait bien et il s'affiche correctement. J'ai généré l'URL à partir du fichier routes.yaml et c'est le même problème. L'URL s'affiche dans le désordre : /{slug}/biens/{id}.

Est-ce que quelqu'un a une idée de ce qui ne va pas ?

Viewing all 1542 articles
Browse latest View live