Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 24-06-2008 08:47:01

Jocio
Membre
Lieu: Marseille
Date d'inscription: 06-07-2007
Messages: 42

[Zend_Form] populate : losange avec un point d'interrogation

Bonjour,

J'ai utilisé la fonction "populate" pour pré-remplir les champs d'un formulaire de mise à jour des informations d'un utilisateur. Ca marche bien mais le problème, c'est que le mot "François" par exemple est foireux : le "ç" est remplacé par un losange noir avec un point d'interrogation.

Ma BDD est en utf8, est-ce de là que vient le problème ?

mon code :

Code:

$form = new FormUser();

// ... recuperation de l'id de l'utilisateur connecté dans la variable $idUser

$user = new Utilisateurs();

$infos = $user->find($idUser)->toArray();
// le tableau contenant les resultat contient un seul tableau avec les valeur de l'utilisateur
$infos = $infos[0];

// je retire la valeur du mot de passe
unset($infos['passwd']);

// je remplis le formulaire
$form->populate($infos);

merci d'avance :-)

Ps : en passant, vous auriez pas une technique plus propre pour recupérer les valeurs d'une ligne de ma table ... :-p


Pouf c'est tout !

Hors ligne

 

#2 24-06-2008 09:57:19

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Zend_Form] populate : losange avec un point d'interrogation

Le même sujet est évoqué ici: http://www.z-f.fr/forum/viewtopic.php?id=783
La solution se trouve en page 2...

Hors ligne

 

#3 24-06-2008 10:33:34

Jocio
Membre
Lieu: Marseille
Date d'inscription: 06-07-2007
Messages: 42

Re: [Zend_Form] populate : losange avec un point d'interrogation

J'ai tout lu vite fait ... et j'ai testé 2 trucs qui me plaisaient :
code placé dans l'init de mon controler

Code:

$this->view->setEscape('htmlentities');

J'affiche "François" autre part dans la page en faisant un "escape" dessus. Ma page HTML est en utf-8 et ça marchait avant ce "setEscape", le "ç" s'affichait normalement.
Maintenant il me met "François" à la fois dans le formulaire ( plus de losange avec point d'interrogation ) et dans le texte normal (alors qu'avant c'était bon).

Du coup, je crois pas que ce soit une bonne solution pour moi ...

Autre essai :
j'ai mit ça dans mon bootstrap juste avant le dispatch ...

Code:

iconv_set_encoding('internal_encoding', 'utf-8');

Alors là, ça change rien du tout.
Le "François" dans le texte normal s'affiche bien ... comme avant, et le losange est toujours dans le formulaire ... comme avant

Bref, j'ai pas avancé :-s

J'ai lus la première page en detail, t'as l'air d'en avoir chié avec ce problème Mr.MoOx ...
c'était bien un bug de Zend ou pas ? si oui, le prolbème a-t-il était corrigé ?

Tant que j'y suis, Philippe a posté ça qui a eu l'air de te debloquer :

Philippe a écrit:

Aller modifier le code du ZF, même s'il est buggué, à mon avis c'est pas une bonne idée parce qu'après tu n'osera plus upgrader...
Par contre si tu veux que ton strtolower fonctionne comme un mb_strtolower, tu peux passer le paramètre mbstring.func_overload à 7 dans ta conf php.
Si tu bosses en UTF-8, tu devrais le faire systématiquement.

A+, Philippe

Cependant, j'ai pas compris ce qu'il dit dans ce message ... peut-être y a-t-il une solution à mon problème ?


Pouf c'est tout !

Hors ligne

 

#4 24-06-2008 10:52:59

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Zend_Form] populate : losange avec un point d'interrogation

Voilà c'est ça.
Tu bosse sur quoi comme serveur, sur un serveur en local?
En fait le truc c'est de modifier ton php.ini
Chez moi vers la ligne 1100 j'ai un truc comme ça

Code:

; overload(replace) single byte functions by mbstring functions.
; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
; etc. Possible values are 0,1,2,4 or combination of them.
; For example, 7 for overload everything.
; 0: No overload
; 1: Overload mail() function
; 2: Overload str*() functions
; 4: Overload ereg*() functions
mbstring.func_overload = 7

Hors ligne

 

#5 25-06-2008 08:16:02

Jocio
Membre
Lieu: Marseille
Date d'inscription: 06-07-2007
Messages: 42

Re: [Zend_Form] populate : losange avec un point d'interrogation

Re-bonjour,

Hier j'ai pas eu le temps de tester, mais là j'ai fait cette manipulation, et ça ne marche toujours pas :-s
"mbstring.func_overload = 7" dans php.ini ne change rien à mon problème ...

Je suis sous windows avec Wamp et le problème est sous firefox 2 et sous IE 6 ( j'ai pas testé d'autre navigateur car je peux pas installer de programme au boulot :-s )

ce losange sous FF2 et ce carré blanc sous IE6 dans mon champ texte me cassent les bonbons :'(


Pouf c'est tout !

Hors ligne

 

#6 25-06-2008 09:09:29

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [Zend_Form] populate : losange avec un point d'interrogation

Bonjour,

J'ai fait une page qui récapitule pas mal de problèmes d'encodages quand tu passes en UTF-8.
http://www.kitpages.fr/php_tutorial_utf8.php
En gros, la grande idée, c'est que tous les éléments de ton appli parlent la même langue (navigateur, apache, mysql, php, système de fichier,...).

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#7 26-06-2008 08:54:30

Jocio
Membre
Lieu: Marseille
Date d'inscription: 06-07-2007
Messages: 42

Re: [Zend_Form] populate : losange avec un point d'interrogation

Salut Philippe,

J'ai lu ta page parce que j'aimerai bien que mon site soit intégrallement en Utf-8.
J'avais fait la plus part de ce que tu dis, sauf ceci :

Code:

<?php
$view->setEncoding('utf-8');
?>

J'ai rajouté ce code dans l'init de mon controleur. Le "populate" prend pour argument le tableau ci-disous (affiché avec Zend_Debug::dump )  :

Code:

array(10) {
  ["idutilisateur"] => string(1) "2"
  ["nom"] => string(6) "Durand"
  ["prenom"] => string(9) "François"
  ["login"] => string(3) "foo"
  ...
}

Le "populate" remplit tout les champs de mon formulaire sauf "François" qu'il laisse vide ( plus de losange avec le ? ) ...

Code:

<input type="text" name="prenom" id="prenom" value="">

Que puis-je faire ? et pourquoi tant de haine envers l'utf-8 ?
Ce serai tellement plus simple si l'utf-8 était mit en place par defaut partout :'(

Ps : ja testé d'utiliser utf8_encode et utf8_decode sans trop savoir ce que ces 2 fonctions font.

Code:

foreach ( $infos as $key => $value ) {
    $infos[$key] = utf8_encode($value);
}
Zend_Debug::dump($infos);
die();
// Zend_Debug::dump() renvois le tableau avec "François"

Code:

foreach ( $infos as $key => $value ) {
    $infos[$key] = utf8_decode($value);
}
Zend_Debug::dump($infos);
die();
// Zend_Debug::dump() renvois le tableau avec "Fran�ois"

Si je retire le debug et le die() que ce soit l'un ou l'autre, le formulaire reste vide pour le prénom :'(

Je comprend rien de ce qui se passe :-s

Dernière modification par Jocio (26-06-2008 09:07:10)


Pouf c'est tout !

Hors ligne

 

#8 26-06-2008 10:10:30

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [Zend_Form] populate : losange avec un point d'interrogation

Bonjour Jocio,

Là dessus, je ne peux pas trop t'aider, je n'utilise ni Zend_View, ni Zend_Form... Là c'est assez spécifique à ces éléments du ZF...

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#9 26-06-2008 10:23:50

Jocio
Membre
Lieu: Marseille
Date d'inscription: 06-07-2007
Messages: 42

Re: [Zend_Form] populate : losange avec un point d'interrogation

Merci quand même d'avoir pris du temps pour m'aider.

Si quelqu'un d'autre à une solution à mon problème, je suis preneur :-)


Pouf c'est tout !

Hors ligne

 

#10 26-06-2008 10:35:30

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Zend_Form] populate : losange avec un point d'interrogation

J'avais aussi eu ce problème lors de bidouilles similaires à mes debut de Zend_Form...
En plus aujourd'hui j'ai réinstallé mon serveur sur linux et pas besoinde de bidouillé ca marche naturellement.
Par contre sur windows j'avais galéré (je redonne le lien http://www.z-f.fr/forum/viewtopic.php?id=783 j'ai pas trop le temps de faire plus)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages