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

Bibliothèques & Frameworks Discussion :

TimeTextBox et Insertion Mysql


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 77
    Points : 57
    Points
    57
    Par défaut TimeTextBox et Insertion Mysql
    Bonjour à tous,
    voila je suis confronté à un petit soucis d'insertion d'heure dans ma base de donnée !
    En effet en utilisant Dojo pour mon form je passe pars le widjet TimeTextBox pour pouvoir insérer dans ma base une heure (donc de type 'time')
    Cependant j'ai remarqué que par ce widjet je retourne une chaine ayant un T (exemple : T08:00:00) ! Donc je ne peux enregistrer cette donnée qui n'est pas en format 'time' dans ma base !
    Quelqu'un pour me venir en aide svp !!

  2. #2
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,

    C'est un cas qui n'a pas de solution évidente. En effet le souci rencontré provient de la serialization que fait Dojo de la date associée à l'heure. Pour faire simple, une solution consiste à recréer un nouveau Widget qui hérite de TimeTextBox et redéfinit la sérialization:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    dojo.declare(
        "MaTimeTextBox",
        dijit.form.TimeTextBox,
         {serialize: function(val, cst) {
                    var t = dojo.date.stamp.toISOString(val,cst);
                    return t.substring(1);                                                      
                    }
         }
    );
     
    puis:
     
    <input dojoType="MaTimeTextBox" ... />
    ERE

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 77
    Points : 57
    Points
    57
    Par défaut
    Merci pour ta solution !
    Cependant j'ais une erreur qui j'espère ne posera pas problème par la suite !
    En effet après avoir fait la manip j'ai cette erreur qui s'affiche ce que je n'avais pas auparavant !
    [Exception... "'Error: Tried to register widget with id==heuredebut but that id is already registered' when calling method: [nsIDOMEventListener::handleEvent]" nsresult: "0x8057001c (NS_ERROR_XPC_JS_THREW_JS_OBJECT)" location: "<unknown>" data: no]
    Je précise que j'utilise Zend Framework pour mon application du coup
    dans mon view j'ai rajouté le widget conseillé et dans mon controller au départ mon code pour mon formulaire était

    Avant :

    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
     
    	$form = new Zend_Dojo_Form();
        	$form->setMethod('POST')->setAction("declaration");	
     
     
    		$form->addElement('NumberSpinner', 'annee', array(
    			  			  'label' => 'Annee :',
    						  'value' => ''.date('Y').'',
    						  'smallDelta' => '1',
    						  'min' => 2005,
    						  'max' => 2050,
    						  'defaultTimeout' => 100,
    						  'timeoutChangeRate' => 100,
    						  'required' => true))
     
    			  ->addElement('DateTextBox', 'datehs', array(
              				   'label' => 'Date :',
            				   'datePattern' => 'dd-MM-yyyy',
            				   'validators' => array('Date'),
            				   'required' => true))
     
    			  ->addElement('TimeTextBox', 'heuredebut', array(
              				   'label' => 'Heure Debut :',
            				   'required' => true))
     
    			  ->addElement('TimeTextBox', 'heurefin', array(
              				   'label' => 'Heure Fin :',
            				   'required' => true))
     
    			  ->addElement('TimeTextBox', 'nbreheure', array(
              				   'label' => 'Nbre Heures :',
            				   'required' => true))	
     
    			  ->addElement('Textarea', 'tache', array(
              				   'label' => 'Tache :',
    				           'cols' => 40,
    					   'rows' => 3))
     
    			  ->addElement('Textarea', 'projet', array(
              				   'label' => 'Projet :',
    					   'cols' => 40,
    					   'rows' => 3))
     
     
        		   ->addElement('SubmitButton', 'submit', array(
            				     'label' => 'Valider'));
     
        	$this->view->form = $form;
     
    		return $form;
    et donc Après :

    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
     
    		$form = new Zend_Dojo_Form();
        	$form->setMethod('POST')->setAction("declaration");	
     
     
    		$form->addElement('NumberSpinner', 'annee', array(
    			  			  'label' => 'Annee :',
    						  'value' => ''.date('Y').'',
    						  'smallDelta' => '1',
    						  'min' => 2005,
    						  'max' => 2050,
    						  'defaultTimeout' => 100,
    						  'timeoutChangeRate' => 100,
    						  'required' => true))
     
    			  ->addElement('DateTextBox', 'datehs', array(
              				   'label' => 'Date :',
            				   'datePattern' => 'dd-MM-yyyy',
            				   'validators' => array('Date'),
            				   'required' => true))
     
    			  ->addElement('TimeTextBox', 'heuredebut', array(
              				   'label' => 'Heure Debut :',
    					   'dojoType' => 'MaTimeTextBox',
            				   'required' => true))
     
    			  ->addElement('TimeTextBox', 'heurefin', array(
              				   'label' => 'Heure Fin :',
    					   'dojoType' => 'MaTimeTextBox',
            				   'required' => true))
     
    			  ->addElement('TimeTextBox', 'nbreheure', array(
              				   'label' => 'Nbre Heures :',
    				           'dojoType' => 'MaTimeTextBox',
            				   'required' => true))	
     
    			  ->addElement('Textarea', 'tache', array(
              				   'label' => 'Tache :',
    				           'dojoType' => 'dijit.form.Textarea',
    					   'cols' => 40,
    					   'rows' => 3))
     
    			  ->addElement('Textarea', 'projet', array(
              				   'label' => 'Projet :',
    				           'dojoType' => 'dijit.form.Textarea',
    				           'cols' => 40,
    				           'rows' => 3))
     
     
        		   ->addElement('SubmitButton', 'submit', array(
            				     'label' => 'Valider'));
     
        	$this->view->form = $form;
     
    		return $form;
    donc l'apparition du paramètre 'dojoType' !! dans les éléments du forme pour prendre en compte le widget ... ! Mais je ne comprends pas trop d'ou vien mon erreur maintenant

    PS : Je précise également que j'utilise des Content-Pane et un Grid (avec Jquery) ... sur ma page !

    voici mon view :

    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
     
    <?php $this->dojo()->enable(); ?>
    <script type="text/javascript">
    	$(document).ready(function() {
    	$('#list').jqGrid({ 
    	url:'../library/Request/recordsdeclaration.php?id=<?php echo $this->escape($this->iduser);?>', 
    	datatype: 'xml', 
    	mtype: 'GET', 
    	colNames:['Annee', 'Date','Heure debut','Heure Fin','Nbre Heures','Saisie le','Statut'], 
    	colModel :[ {name:'annee_hs', index:'annee_hs', width:50, align: 'center'}, 
    				{name:'date_hs', index:'date_hs', width:100, formatter:'date', align: 'center'}, 
    				{name:'heure_d_hs', index:'heure_d_hs', width:80, align: 'center'}, 
    				{name:'heure_f_hs', index:'heure_f_hsn', width:80, align: 'center'},
    				{name:'nbre_heure_hs', index:'nbre_heure_hs', width:80, align: 'center'},
    				{name:'date_avis_hs', index:'date_avis_hs', formatter:'date', width:80, align:'center'},
    				{name:'etat_avis_hs', index:'etat_avis_hs', width:60, align:'center'}],
    	pager: $('#pager'), 
    	rowNum:10,
    	width:870,
    	loadtext: '',
    	height:300,
    	rowList:[10,20,30], 
    	sortname: 'id_avis_hs', 
    	sortorder: "desc", 
    	viewrecords: true, 
    	imgpath: '../public/js/themes/steel/images', 
    	caption: '' 
    	}); 
    	$('#tabs').tabs();
    	//hover states on the static widgets
    	$('#dialog_link, ul#icons li').hover(
    	function() { $(this).addClass('ui-state-hover'); }, 
    	function() { $(this).removeClass('ui-state-hover'); });
    });
    </script>
    <script type="text/javascript">
    dojo.declare(
        "MaTimeTextBox",
        dijit.form.TimeTextBox,
         {serialize: function(val, cst) {
                    var t = dojo.date.stamp.toISOString(val,cst);
                    return t.substring(1);                                                      
                    }
         }
    );
    </script>
    <div id="tabs">
    	<ul>
    	<li><a href="#tabs-1">Faire une d&eacute;claration</a></li>
    	<li><a href="#tabs-2">Consulter mes avis</a></li>
    	</ul>
    	<div style="background-color:#EEEEEE;" id="tabs-1">
        <h3>Nouvelle d&eacute;claration</h3>
        <?php
                    echo '<div align="left">';
                    echo '<form action="'.$this->escape($this->form->getAction()).'" method="'.$this->escape($this->form->getMethod()).'">';                                                        echo '<dl>';
                    echo $this->form->annee;
                    echo '</dl>';
                    echo '<dl>';
                    echo $this->form->datehs;
                    echo $this->form->heuredebut;
                    echo $this->form->heurefin;
            echo $this->form->nbreheure;
                    echo '</dl>';
                    echo '<dl>';
                    echo $this->form->tache;
                    echo '</dl>';
                    echo '<dl>';
                    echo $this->form->projet;
                    echo '</dl>';
                    echo '<dl>';
                    echo $this->form->submit;
            echo '</dl>';
                    echo '</form>';
                    echo '</div>'; 
            ?>
        </div>
    	<div style="background-color:#EEEEEE;" id="tabs-2">
        <h3>Consultation des avis</h3>
    		<table align="center" id="list" class="scroll"></table> 
    		<div align="center" id="pager" class="scroll" style="text-align:center;">
    		</div> 
        </div>
    </div>

  4. #4
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,

    Je n'y connais rien à ZF mais de ce que je viens de comprendre en utilisant l'API, je crois que tu pourrais essayer cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    require_once 'Zend/Dojo/Form/Element/TimeTextBox.php';
     
    //on crée notre nouvelle class comme si c'était une class native Dojo Zend 
    //(va t il générer pour autant un dojo.require(...) ? :calim2: ):
    class Zend_Dojo_Form_Element_MaTimeTextBox extends Zend_Dojo_Form_Element_TimeTextBox {
        public $helper = 'MaTimeTextBox';
    }
    Et tu ajoutes dans ta page HTML le code Dojo passé hier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    dojo.declare(
        "MaTimeTextBox",
        dijit.form.TimeTextBox,
         {serialize: function(val, cst) {
                    var t = dojo.date.stamp.toISOString(val,cst);
                    return t.substring(1);                                                      
                    }
         }
    );
    Et tu reviens sur une déclaration traditionnelle dans ton PHP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ->addElement('MaTimeTextBox', 'heuredebut', array(
              				   'label' => 'Heure Debut :',
            				   'required' => true))

    A Voir...

    ERE


    EDIT
    ----
    Pour mon info, peux tu me passer le code HTML généré par ZEND chez le client ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 77
    Points : 57
    Points
    57
    Par défaut
    Voici mon code généré :

    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
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    <meta name="description" content="Application Web"  />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Application</title>
    <link href="/WebApp/public/images/favicon.ico" rel="shortcut icon" type="image/x-icon" />
    <link href="/WebApp/public/css/smoothness/jquery-ui-1.7.1.custom.css" rel="stylesheet" type="text/css" />
    <link href="/WebApp/public/css/styles.css" rel="stylesheet" type="text/css" media="screen" />
    <link href="/WebApp/public/js/themes/steel/grid.css" rel="stylesheet" type="text/css" media="screen" />
    <link href="/WebApp/public/js/themes/jqModal.css" rel="stylesheet" type="text/css" media="screen" />
    <link href="/WebApp/public/js/jquery.gantt.css" />
    <!--[if IE]>
    <link href="/WebApp/public/css/styles_ie.css" rel="stylesheet" type="text/css" media="screen" />
    <![endif]-->
    <script type="text/javascript" src="/WebApp/public/js/functions.js"></script>
    <script type="text/javascript" src="/WebApp/public/js/jquery.js"></script>
     
    <script type="text/javascript" src="/WebApp/public/js/jquery.jqGrid.js"></script>
    <script type="text/javascript" src="/WebApp/public/js/jquery-ui.js"></script>
    <script type="text/javascript" src="/WebApp/public/js/javascript/jqModal.js"></script>
    <script type="text/javascript" src="/WebApp/public/js/javascript/jqDnR.js"></script>
    <style type="text/css">
    <!--
        @import "../public/js/dijit/themes/tundra/tundra.css";
        @import "../public/js/dojox/grid/_grid/tundraGrid.css";
    -->
    </style>
    <script type="text/javascript">
    //<![CDATA[
        var djConfig = {"locale":"fr","usePlainJson":true,"parseOnLoad":true};
    //]]>
    </script>
    <script type="text/javascript" src="../public/js/dojo/dojo.js"></script>
     
    <script type="text/javascript">
    //<![CDATA[
    dojo.require("dijit.form.NumberSpinner");
        dojo.require("dijit.form.DateTextBox");
        dojo.require("dijit.form.TimeTextBox");
        dojo.require("dijit.form.Textarea");
        dojo.require("dijit.form.Button");
        dojo.require("dojo.parser");
    dojo.addOnLoad(function() {
        dojo.forEach(zendDijits, function(info) {
            var n = dojo.byId(info.id);
            if (null != n) {
                dojo.attr(n, dojo.mixin({ id: info.id }, info.params));
            }
        });
        dojo.parser.parse();
    });
    var zendDijits = [{"id":"annee","params":{"smallDelta":1,"constraints":"{\"min\":2005,\"max\":2050}","defaultTimeout":100,"timeoutChangeRate":100,"required":"true","dojoType":"dijit.form.NumberSpinner"}},{"id":"datehs","params":{"constraints":"{\"datePattern\":\"dd-MM-yyyy\"}","required":"true","dojoType":"dijit.form.DateTextBox"}},{"id":"heuredebut","params":{"required":"true","dojoType":"dijit.form.TimeTextBox"}},{"id":"heurefin","params":{"required":"true","dojoType":"dijit.form.TimeTextBox"}},{"id":"nbreheure","params":{"required":"true","dojoType":"dijit.form.TimeTextBox"}},{"id":"tache","params":{"dojoType":"dijit.form.Textarea"}},{"id":"projet","params":{"dojoType":"dijit.form.Textarea"}},{"id":"submit","params":{"label":"Valider","dojoType":"dijit.form.Button"}}];
    //]]>
     
    </script></head>
     
    <body onLoad="date_heure('date_heure')" class="tundra">
    <div id="content">
       <div id="header">
        <div style="float: right; padding-top: 3px">
     | <a href="/WebApp">Agent</a>
     | <a href="/WebApp/gest">Gestionnaire</a>
     | <a href="/WebApp/chef">Chef</a>
     | <a href="/WebApp/resp">Responsable</a>
     | <a href="/WebApp/admin">Administrateur</a>
     |
    </div>
    <div id="headertitle">WEBAPPLI
    | Bienvenue | Profil : Super administrateur [ <a href="/WebApp/auth/logout">D&eacute;connexion</a> ]
    </div>   </div>   
     
       <div id="page">
     
    		<p style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px;"  align="center" id="date_heure"></p>
        <h1><img alt="user" src="/WebApp/public/images/user.png" /> [ MODE AGENT ] - <a href="/WebApp">ACCUEIL</a></h1>
    <script type="text/javascript">
    	$(document).ready(function() {
    	$('#list').jqGrid({ 
    	url:'../library/Request/recordsdeclaration.php?id=1', 
    	datatype: 'xml', 
    	mtype: 'GET', 
    	colNames:['Annee', 'Date','Heure debut','Heure Fin','Nbre Heures','Saisie le','Statut'], 
    	colModel :[ {name:'annee_hs', index:'annee_hs', width:50, align: 'center'}, 
    				{name:'date_hs', index:'date_hs', width:100, formatter:'date', align: 'center'}, 
    				{name:'heure_d_hs', index:'heure_d_hs', width:80, align: 'center'}, 
    				{name:'heure_f_hs', index:'heure_f_hsn', width:80, align: 'center'},
    				{name:'nbre_heure_hs', index:'nbre_heure_hs', width:80, align: 'center'},
    				{name:'date_avis_hs', index:'date_avis_hs', formatter:'date', width:80, align:'center'},
    				{name:'etat_avis_hs', index:'etat_avis_hs', width:60, align:'center'}],
    	pager: $('#pager'), 
    	rowNum:10,
    	width:870,
    	loadtext: '',
    	height:300,
    	rowList:[10,20,30], 
    	sortname: 'id_avis_hs', 
    	sortorder: "desc", 
    	viewrecords: true, 
    	imgpath: '../public/js/themes/steel/images', 
    	caption: '' 
    	}); 
    	$('#tabs').tabs();
    	//hover states on the static widgets
    	$('#dialog_link, ul#icons li').hover(
    	function() { $(this).addClass('ui-state-hover'); }, 
    	function() { $(this).removeClass('ui-state-hover'); });
    });
    </script>
    <script type="text/javascript">
    dojo.declare(
        "MaTimeTextBox",
        dijit.form.TimeTextBox,
         {serialize: function(val, cst) {
                    var t = dojo.date.stamp.toISOString(val,cst);
                    return t.substring(1);                                                      
                    }
         }
    );
    </script>
    <div id="tabs">
    	<ul>
    	<li><a href="#tabs-1">Faire une d&eacute;claration</a></li>
     
    	<li><a href="#tabs-2">Consulter mes avis</a></li>
    	</ul>
    	<div style="background-color:#EEEEEE;" id="tabs-1">
        <h3>Nouvelle d&eacute;claration</h3>
        <div align="left"><form action="declaration" method="post"><dl><dt><label for="annee" class="required">Annee :</label></dt>
    <dd>
    <input id="annee" name="annee" value="2009" type="text" /></dd></dl><dl><dt><label for="datehs" class="required">Date :</label></dt>
     
    <dd>
    <input id="datehs" name="datehs" value="" type="text" /></dd><dt><label for="heuredebut" class="required">Heure Debut :</label></dt>
    <dd>
    <input dojoType="MaTimeTextBox" id="heuredebut" name="heuredebut" value="" type="text" /></dd><dt><label for="heurefin" class="required">Heure Fin :</label></dt>
    <dd>
    <input dojoType="MaTimeTextBox" id="heurefin" name="heurefin" value="" type="text" /></dd><dt><label for="nbreheure" class="required">Nbre Heures :</label></dt>
    <dd>
    <input dojoType="MaTimeTextBox" id="nbreheure" name="nbreheure" value="" type="text" /></dd></dl><dl><dt><label for="tache" class="optional">Tache :</label></dt>
    <dd>
    <textarea dojoType="dijit.form.Textarea" cols="40" rows="3" id="tache" name="tache" type="text"></textarea>
    </dd></dl><dl><dt><label for="projet" class="optional">Projet :</label></dt>
     
    <dd>
    <textarea dojoType="dijit.form.Textarea" cols="40" rows="3" id="projet" name="projet" type="text"></textarea>
    </dd></dl><dl><dt>&nbsp;</dt><dd>
    <input id="submit" name="submit" value="Valider" type="submit" /></dd></dl></form></div>    </div>
    	<div style="background-color:#EEEEEE;" id="tabs-2">
        <h3>Consultation des avis</h3>
    		<table align="center" id="list" class="scroll"></table> 
    		<div align="center" id="pager" class="scroll" style="text-align:center;">
    		</div> 
        </div>
     
    </div> 
       </div>
     
       <div id="footer">
       <div style="text-transform:uppercase;">
    Copyright &copy; 2009 | Tous droits r&eacute;serv&eacute;s
    </div>
    <div style="float:left;">
    <img border="0" alt="Powered by Zend Framework" src="/WebApp/public/images/zend.png" />
     
    </div>
    <div style="float:right;">
    <img border="0" alt="Logo" src="/WebApp/public/images/logo.png" />
    </div>
       </div>
    </div>
    </body>
    </html>
    J'ai essayé de voir comme tu m'as dit en utilisant l'API mais j'y suis pas arrivé !

    Warning: Plugin by name 'MaTimeTextBox' was not found in the registry; used paths: Zend_Dojo_View_Helper_: Zend/Dojo/View/Helper/;Zend/Dojo/View/Helper/ Zend_View_Helper_: Zend/View/Helper/;./application/views\helpers/ in C:\wamp\www\WebApp\library\Zend\Form\Element.php on line 1928
    par contre j'ai essayé autre chose concernant mon erreur avec le code d'auparavant et en ayant mis mon ParseOnLoad à False par rapport à Zend
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Zend_Dojo::enableView($view);
    $view->dojo()
    	 ->addStyleSheetModule('dijit.themes.tundra')
    	 ->setLocalPath('../public/js/dojo/dojo.js')
    	 ->setDjConfigOption('locale', 'fr')
    	 ->setDjConfigOption('usePlainJson',true)
    	 ->setDjConfigOption('parseOnLoad',false)
    	 ->disable();
    du coup dans mon code généré
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //<![CDATA[
        var djConfig = {"locale":"fr","usePlainJson":true,"parseOnLoad":false};
    //]]>

    du coup mon navigateur ne m'affiche plus l'erreur ("'Error: Tried to register widget with id ...") !
    Pourrait tu me faire une petite précision sur le ParseOnload ?? faut dire que je débute avec Dojo

  6. #6
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Re-Salut,

    J'ai aussi fait quelques tests de mon côté à partir de ton code HTML: la ligne qui pose problème est celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var zendDijits = [{"id":"annee","params":{"smallDelta":1,"constraints":"{\"min\":2005,\"max\":2050}","defaultTimeout":100,"timeoutChangeRate":100,"required":"true","dojoType":"dijit.form.NumberSpinner"}},{"id":"datehs","params":{"constraints":"{\"datePattern\":\"dd-MM-yyyy\"}","required":"true","dojoType":"dijit.form.DateTextBox"}},{"id":"heuredebut","params":{"required":"true","dojoType":"MaTimeTextBox"}},{"id":"heurefin","params":{"required":"true","dojoType":"dijit.form.TimeTextBox"}},{"id":"nbreheure","params":{"required":"true","dojoType":"dijit.form.TimeTextBox"}},{"id":"tache","params":{"dojoType":"dijit.form.Textarea"}},{"id":"projet","params":{"dojoType":"dijit.form.Textarea"}},{"id":"submit","params":{"label":"Valider","dojoType":"dijit.form.Button"}}];
    Je vais t'expliquer le fonctionnement et j'espère que tu pourras apporter les corrections dans Zend...

    Au chargement de la page HTML Dojo se charge et lis la propriété parseOnLoad Si elle vaut TRUE, alors il parse au fil de l'eau les éléments HTML qui disposent d'un attribut dojoType="XXXX" et effectue leur rendu.
    Dans notre cas, pas de problème à condition qu'on ait bien déclaré au début MaTimeTextBox...
    Si parseOnLoad vaut FALSE, alors Dojo ne ... parse pas (!) au fil de l'eau et c'est de la responsabilité du développeur d'appeler dojo.parser.parse(); (par défaut sur le document mais on peut aussi l'appeler sur un noeud précis, mais c'est un autre cas ). Donc dans ce cas le parsing est généralement appelé et réalisé dans la fonction dojo.addOnLoad. Cela permet notamment de s'assurer que tout est disponible pour le parse (en particulier cas du téléchargement de dojo.js à partir de AOL ou Google).

    Pour ton cas cela ne pose pas de soucis, sauf que tu est en parseOnload =true et que dojo.parser.parse(); est aussi appelé ! Etonnant.

    Donc à mon avis ce qui se passe c'est que au chargement de la page dojo parse les éléments et crée ton dijit MaTimeTextBox heuredebut.
    Puis au onLoad ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        dojo.forEach(zendDijits, function(info) {
            var n = dojo.byId(info.id);
            if (null != n) {
                dojo.attr(n, dojo.mixin({ id: info.id }, info.params));
            }
        });
        dojo.parser.parse();
    "écrase" ton controle puis reparse de nouveau, d'où le souci d'existence d'un id ! (J'espère être assez clair car ce n'est pas facile à expliquer )
    Il l'écrase parce que le dojoType dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var zendDijits = [{"id":"annee","params":{"smallDelta":1,"constraints":"{\"min\":2005,\"max\":2050}","defaultTimeout":100,"timeoutChangeRate":100,"required":"true","dojoType":"dijit.form.NumberSpinner"}},{"id":"datehs","params":{"constraints":"{\"datePattern\":\"dd-MM-yyyy\"}","required":"true","dojoType":"dijit.form.DateTextBox"}},{"id":"heuredebut","params":{"required":"true","dojoType":"MaTimeTextBox"}},{"id":"heurefin","params":{"required":"true","dojoType":"dijit.form.TimeTextBox"}},{"id":"nbreheure","params":{"required":"true","dojoType":"dijit.form.TimeTextBox"}},{"id":"tache","params":{"dojoType":"dijit.form.Textarea"}},{"id":"projet","params":{"dojoType":"dijit.form.Textarea"}},{"id":"submit","params":{"label":"Valider","dojoType":"dijit.form.Button"}}];
    est TimeTextBox et non MaTimeTextbox !


    Finalement, l'idéal serait d'être en parseOnload=false, avec le code que tu as , mais en remplaçant les dijit.form.TimeTextBox par des MaTimeTextBox dans la ligne de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var zendDijits = [{"id":"annee","params":{"smallDelta":1,"constraints":"{\"min\":2005,\"max\":2050}","defaultTimeout":100,"timeoutChangeRate":100,"required":"true","dojoType":"dijit.form.NumberSpinner"}},{"id":"datehs","params":{"constraints":"{\"datePattern\":\"dd-MM-yyyy\"}","required":"true","dojoType":"dijit.form.DateTextBox"}},{"id":"heuredebut","params":{"required":"true","dojoType":"dijit.form.TimeTextBox"}},{"id":"heurefin","params":{"required":"true","dojoType":"dijit.form.TimeTextBox"}},{"id":"nbreheure","params":{"required":"true","dojoType":"dijit.form.TimeTextBox"}},{"id":"tache","params":{"dojoType":"dijit.form.Textarea"}},{"id":"projet","params":{"dojoType":"dijit.form.Textarea"}},{"id":"submit","params":{"label":"Valider","dojoType":"dijit.form.Button"}}];

    Et sinon, concernant le code PHP que je t'ai proposé précédemment et qui pose souci, que se passe t il si tu enlèves:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public $helper = 'MaTimeTextBox';
    Bon dev,

    ERE

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 77
    Points : 57
    Points
    57
    Par défaut
    Re-Salut !
    Tu as très bien expliquer le problème, j'ai compris d'où venais l'erreur !
    Mais bon j'ai essayer de tourner dans tous les sens j'y arrive toujours pas !
    J'ai même essayé de voir pour remplacer les dijit.form.Timetextbox par des MatimeTextbox dans la ligne de code concernée ! mais rien a faire j'ai toujours le dijit.form.TimeTextbox qui reste !
    Mais bon apparemment l'erreur n'influe pas sur le fonctionnement de l'application j'essayerais de retourner dessus par la suite !
    En tout cas merci ERE

Discussions similaires

  1. Pb ordre insertion - Mysql
    Par lhpp dans le forum JDBC
    Réponses: 13
    Dernier message: 04/06/2007, 16h52
  2. [MySQL] Récupérer $_POST et insertion MySql
    Par hugo69 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/12/2006, 20h23
  3. Problèmede insert MySQL avec les DECIMAL
    Par SuperCed dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/04/2006, 17h04
  4. Problème sur requête insert mysql
    Par kcizth dans le forum Requêtes
    Réponses: 5
    Dernier message: 04/02/2006, 18h37

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