Bonjour,

Voila je rencontre un petit problème avec mon code.
Je souhaite afficher depuis une base MySQL déjà existante en innoDB avec un Interclassement en "utf8_general_ci"
j'ai un champs titre avec "jeudi 06 février 2020"

Forcement quand je récupère et je veux afficher, il me reproduit jeudi 06 février 2020

J'utilise symfony 5.0.4
dans mon controller :
$cantine = $this->cantine->findOneBy([ 'startday' => new \DateTime("2020-02-10") ]); ... return $this->render('home/index.html.twig', [ ... 'cantine' => $cantine, ... ]);

dans 'home/index.html.twig
<h5 class="text-center mt-2 mb-3">{{ cantine.title | title}}</h5>

Repository de base sans modification

Entité
` namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;

/**

  • EcoCantine
  • @ORM\Table(name="eco_cantine")
  • @ORM\Entity
  • @ORM\Entity(repositoryClass="App\Repository\EcoCantineRepository")
    */
    class EcoCantinearound{
    /**
  • @var int
  • @ORM\Column(name="id", type="integer", nullable=false)
  • @ORM\Id
  • @ORM\GeneratedValue(strategy="IDENTITY")
    */
    private $id;

    /**

  • @var string
  • @ORM\Column(name="title", type="string", length=255, nullable=false)
    */
    private $title;
    public function getTitle(): ?string
    {
    return $this->title;
    }

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

Ce que je fais

dans les pages twig (base.html.twig) j'ai mis mon charset en utf8 --> <meta charset="UTF-8">
j'ai également essayé avec "| convert_encoding()" sans grand succès
dans doctrine.yaml j'ai fait ceci
dbal: url: '%env(resolve:DATABASE_URL)%' charset: utf8 default_table_options: charset: utf8 collate: utf8_general_ci

Ce que je veux

Quand j'utilise mon ancien système, l'affichage se fait correctement "jeudi 06 février 2020"

Merci d'avance de votre aide

4 réponses


Ca semble plus être un problème d'encodage de tes fichiers, plutôt qu'un problème côté BDD.

Regarde si tu as bien <meta charset="UTF-8"> en entête ?
Vérifie aussi que ton fichier est encodé en UTF8.

fderoeux
Auteur

J'ai le meta
et mon entête a bien : Content-Type: text/html; charset=UTF-8
mon fichier est également encodé en UTF8 :-/

Bonjour.
Au lieu de vouloir sauvegarder sous chaîne de caractères en base de données, pourquoi ne pas plutôt utiliser un champ de type date et utiliser le formatage uniquement au moment de l'affichage ?
Ce qui te permettra en plus par la suite de pouvoir faire des conditions SQL plus élaborées si le cas se présente plus tard et qui t'évitera de devoir modifier ce champs pour tous les enregistrements de la table.

fderoeux
Auteur

Je sais bien, mais ce n'est qu'un exemple, j'ai également des champs avec des titres autre que des dates avec ce problème