IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Form PHP Discussion :

Zend Form et caractère spéciaux


Sujet :

Zend_Form PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Chef d’entreprise
    Inscrit en
    Mars 2002
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef d’entreprise

    Informations forums :
    Inscription : Mars 2002
    Messages : 212
    Par défaut Zend Form et caractère spéciaux
    Voici le résumé de mon code , un truc très classique


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if ($this->_request->isPost()) {
                $formdata = $this->_request->getPost ();
                if ($form->isValid($formdata)) {
    // si les données sont valides , j'insère dans ma base de donnée
                    $res = new mRessources();
                    $res->nvRes($form->getValues());
     
     
                }else {
    //sinon, je fais un form populate et j'alerte l'utilisateur
                    $form->populate($formdata);
                    $this->view->message = 'Veuillez vérifier vos données.';
                }
            }
    Dans le cas où les données sont valides, elles sont insérées correctement dans la base, y compris les caractères accentués. C'est la preuve que les caractères sont bien interprétés par mon formulaire et qu'il n'y a pas de distortion lors de la communication entre l'application et la base et que l'UTF 8 est bien configuré au niveau d'apache et de postgresql.

    Par contre, lorsque je fais $form->populate($formdata), c'est juste à ce niveau là que les cacatères acentués sont mal affichés.

  2. #2
    Membre chevronné Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Par défaut
    il faut que tu regarde l'encodage de ta page html
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

  3. #3
    Membre éclairé
    Profil pro
    Chef d’entreprise
    Inscrit en
    Mars 2002
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef d’entreprise

    Informations forums :
    Inscription : Mars 2002
    Messages : 212
    Par défaut
    En fait j'utilise cette instruction dans mon controleur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->view->setEscape('utf8_encode');
    ceci permet de générer cette ligne au niveau de ma page HTML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

  4. #4
    Membre chevronné Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Par défaut
    Dans le cas ou tu creer le form tes donnees ne sont pas en utf-8... Elles ne proviennent pas de ta base.
    Tu dans mettre iso et non utf8 en encodage

    setEscape('je connais pas l'attibut:-(');

  5. #5
    Membre éclairé
    Profil pro
    Chef d’entreprise
    Inscrit en
    Mars 2002
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef d’entreprise

    Informations forums :
    Inscription : Mars 2002
    Messages : 212
    Par défaut
    J'ai écrit en dur la ligne dans ma vue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    et j'ai enlevé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->view->setEscape('utf8_encode');
    Le problème s'est encore agravé : il ne se limite pas aux formulaires, toutes les données affichées dans la page ne sont plus affichées correctement même les titres...

  6. #6
    Membre chevronné Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Par défaut
    Normale car le reste de tes donnes sont en utf8 :-)

    Le plus simple est donc d'encoder ta chaine de caractere

    utf8_encode("Mon alerte");

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 12
    Par défaut Zend et UTF-8
    Bonjour,

    Voilà plusieurs jours que j'ai passer tous les fichiers du site en UTF-8. Pas de problème de ce côté là, j'enregistre avec DreamWeaver sans BOM. Ma base est en UTF-8 également. Tous les accents s'affichent normalement et s'insèrent correctement dans les tables.
    Le site tourne sur Apache (php 5.2) et MySql, tous deux configurés en UTF-8, "AddDefaultCharset UTF-8" se trouve dans le .htaccess.
    Je rencontre le problème suivant: lors de l'affichage des 'forms', je me retrouve avec des caratères ajoutés dans le code HTML par exemple:

    <div id="header">blablabla (rendu layout default.phtml)</div>
    <div id="exemple">(rendu des vues)...<form>formelements</form>.... </div> </div>.
    Je me retrouve donc avec des '...' qui me décalent toutes mes 'forms' d'une ligne.
    Quelqu'un saurait-il m'éclairer sur ce problème ? J'ai pas mal fouillé les forums, mais personne n'en parle.

    Je vous laisse donc ma config, peut être ai-je oublié quelque chose.
    Ma config.ini :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    [production]
    
    phpSettings.display_startup_errors = 0
    phpSettings.display_errors = 0
    phpSettings.date.timezone = "Europe/Paris"
    
    includePaths.library = LIBRARY_PATH
    
    bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
    bootstrap.class = "Bootstrap"
    
    autoloaderNamespaces[] = "My_"
    
    resources.view.encoding = "UTF-8"  ;; si activé : Plugin baseUrl not found !
    ;resources.layout.encoding = "UTF-8"  ; pour test, change rien
    
    ; initialize database
    resources.db.adapter = "pdo_mysql"
    resources.db.params.host = "localhost"
    resources.db.params.username = "root"
    resources.db.params.password = ""
    resources.db.params.dbname = "xxxxxx"
    resources.db.params.charset = "UTF8"
    #resources.db.params.profiler = true
    resources.db.params.date_format = "YYYY-MM-ddTHH:mm:ss"
    resources.db.isDefaultTableAdapter = true
    
    
    
    ; initialize front controller resource
    
    resources.frontController.defaultModule = "default"
    resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
    resources.frontController.defaultControllerName = "index"
    resources.frontController.defaultAction = "index"
    resources.frontController.moduleControllerDirectoryName = "controllers"
    resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
    
    
    resources.modules[] = ""
    
    ; initialize layout resource
    resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
    resources.layout.layout = "default"
    resources.layout.helperPath = "APPLICATION_PATH "/layouts/helpers"
    
    
    
    # initilisation du log
    resources.log.writer.type = stream
    resources.log.writer.file = APPLICATION_PATH "/logs/application.log"
    
    
    
    [development : production]
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1
    Mon index :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <?php
    // Set the initial include_path. You may need to change this to ensure that
    // Zend Framework is in the include_path; additionally, for performance
    // reasons, it's best to move this to your web server configuration or php.ini
    // for production.
    
    // encoding //Ne change rien 
    setlocale(LC_CTYPE, 'C');
    mb_internal_encoding("UTF-8");
    mb_regex_encoding("UTF-8");
    
    
    set_include_path(implode(PATH_SEPARATOR, array(
    realpath(dirname(__FILE__) . '/../library'),
    get_include_path(),
    )));
    
    // Define path to application directory
    defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
    
    // Define application environment
    defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
    
    
    /** Zend_Application */
    require_once 'Zend/Application.php';
    
    // Create application, bootstrap, and run
    $application = new Zend_Application(
    						APPLICATION_ENV,
    						APPLICATION_PATH . '/configs/app.ini'
    					);
    
    $application->bootstrap();
    $application->run();
    Mon Bootstrap principal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    <?php
    /**
     * Application bootstrap
     *
     * @uses    Zend_Application_Bootstrap_Bootstrap
     * @package QuickStart
     */
    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    {
    	private $_acl = null;
    	private $_auth = null;
    	private $_role = null;
    
    	public function run()
    	{
    		// Cela permet d'avoir le fichier de configuration disponible depuis n'importe ou dans l'application.
    		Zend_Registry::set('config', new Zend_Config($this->getOptions()));
    		parent::run();
    	}
    
    	protected function _initAutoloader() {
    		$moduleLoader = new Zend_Application_Module_Autoloader(array(
    			'namespace' => 'My_', // pas de namespace
    			'basePath' => APPLICATION_PATH,
    		));
    		return 	$moduleLoader;
    	}
    
    
    
    
    	protected function _initDb()
    	{
    		//on charge notre fichier de configuration
    		$config = new Zend_Config($this->getOptions());
    		//On essaye de faire une connection a la base de donnee.
    		try{
    			$db = Zend_Db::factory($config->resources->db);
    			//on test si la connection se fait
    			$db->getConnection();
    		}catch ( Exception $e ) {
    			exit( $e -> getMessage() );
    		}
    		// on stock notre dbAdapter dans le registre
    		Zend_Registry::set( 'db', $db );
    		Zend_Db_Table::setDefaultAdapter($db);
    		return $db;
    	}
    
    	protected function _initViewHelpers()	{
    
    		$this->_auth = Zend_Auth::getInstance();
    		$this->_acl = new My_Model_Acl2();
    
    		$this->_role = $this->_auth->hasIdentity() ? $this->_auth->getStorage()->read()->usr_role : 'guest';
    		Zend_Registry::set('role', $this->_role);
    		
    		$fc = Zend_Controller_Front::getInstance();
    			// Plugin qui verifie les droits
    			$fc->registerPlugin(new My_Plugin_Auth($this->_auth, $this->_acl));
    			//Plugin qui stock moduleName, controllerName, actionName
    			$fc->registerPlugin(new My_Plugin_LinkRegister());
    
    		// Initialisation de la vue
    		// Recup du Layout
    		$this->bootstrap('layout');
    		$layout = $this->getResource('layout');
    		$view = $layout->getView();
    		
    		$view->setEncoding('UTF-8');
    
    		//Dojo
    		Zend_Dojo::enableView($view);
    		$view->dojo()
    			->addStyleSheetModule('dijit.themes.tundra')
    			->setDjConfigOption('usePlainJson', true)
    			->disable();
    
    		//HTML HEADER						
    		$view->doctype('XHTML1_STRICT');
    		$view->headMeta()->appendHttpEquiv('Content-type','text/html;charset=utf-8')
    			->appendHttpEquiv('X-UA-Compatible','IE=EmulateIE7')
    			->appendName('Description','Epitec');
    		$view->headTitle()->setSeparator(' - ');
    		$view->headTitle('Epitec');
    		$view->headScript()->appendFile('/js/jquery.js');
    		$view->headScript()->appendFile('/js/nav.js');
    
    		// Navigation (menus)
    		$navContainerConfig = new Zend_Config_Xml(APPLICATION_PATH . '/configs/menu.xml', 'nav');
    Zend_Registry::set('test',$navContainerConfig);
    		$navContainer = new Zend_Navigation($navContainerConfig);
    		$view->navigation($navContainer);
    		$view->navigation()->setAcl($this->_acl);
    		$view->navigation()->setRole($this->_role);
    
    		//View renderer //avec ou sans, change rien
    		$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
    		$viewRenderer->setView($view);
    
    		return $view;
    	}
    
    
    	/**
    	 * Initialize Translation
    	 *
    	 * @return Zend_Translate
    	 */
    	public function _initTranslate()
    	{
    		$translate = new Zend_Translate('array', APPLICATION_PATH . '/languages/fr.php', 'fr');
    		$translate->addTranslation(APPLICATION_PATH . '/languages/it.php', 'it');
    		$translate->setLocale('fr');
    		Zend_Form::setDefaultTranslator($translate);
    		Zend_Registry::set('Zend_Translate', $translate);
    		return $translate;
    	}
    
    }
    Merci de l'intérêt que vous porterez à mon sujet.
    Dans l'attente, salutations.

    JBaptiste.

Discussions similaires

  1. Zend form, ajouter un caractère derrière un input text
    Par supertotal dans le forum Zend_Form
    Réponses: 7
    Dernier message: 24/02/2012, 18h00
  2. [ZF 1.11] $form->populate n'affiche pas les libellés avec caractères spéciaux
    Par schwarzy2 dans le forum Zend_Form
    Réponses: 4
    Dernier message: 30/08/2011, 11h10
  3. [Form] Caractères spéciaux dans les noms de champs
    Par Mistic100 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 29/06/2011, 08h16
  4. Caractère spéciaux request.form
    Par freuh94 dans le forum ASP
    Réponses: 2
    Dernier message: 26/10/2010, 15h55
  5. Caractères spéciaux à ne pas passer dans une form
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 02/03/2006, 12h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo