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 Framework PHP Discussion :

1.10.8 URL et baseurl [ZF 1.10]


Sujet :

Zend Framework PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 71
    Points : 58
    Points
    58
    Par défaut 1.10.8 URL et baseurl
    Bonjour,

    Voici mon index.phtml :

    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
    
    <?php $this->headScript()->captureStart(); ?>
    var baseUrl = '<?php echo $this->baseUrl()?>';
    <?php $this->headScript()->captureEnd(); ?>
    
    <?php
          // mettre les scripts dans l'ordre
    
          // placer celui-ci à un offset particulier pour s'assurer
          // de le charger en dernier
          $this->headScript()
          ->appendFile('scripts/woutils.js')
          ->appendFile('scripts/calc-selector.js')
          ->prependFile('scripts/jquery143.js');
          
          echo $this->headScript();
    ?>
    
    
    <input type="button" name="calculer" value="Tester" onClick="tester();">
    
    <form name="calculateurimc" method="post" action="Index/imc">
    	<table width="400px" height="91px">
    		<tbody>
    
             <tr>
    				<td width="400" valign="top" align="center" rowspan="1" colspan="3">
    					<h1>Calculateur IMC</h1>
    				</td>
    			</tr>
    
             <tr>
    				<td width="400" valign="top" align="center">
    					Taille (en cm) : <input type="text" maxlength="5" size="5" name="taille" id="idTaille">
    				</td>
    
                <td width="400" valign="top" align="center">
    					Poids : <input type="text" maxlength="5" size="5" name="poids" id="idPoids">
    				</td>
    			</tr>
    			
    			<tr>
    				<td width="400" valign="top" align="right" rowspan="1" colspan="3">
    					<input type="submit" name="calculer" value="Calculer IMC">
    				</td>
    			</tr>
    			
    			<tr>
                <td width="400" valign="top" align="center" id="idImc">
    					<!--Imc : <input type="text" maxlength="5" size="5" name="imc">-->
    				</td>
    			</tr>
    			
    		</tbody>
    	</table>
    </form>
    Mon fichier calc-selector.js :

    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
    function tester()
    {
       var _taille = $('input[name="taille"]')[0].value;
       var _poids = $('input[name="poids"]')[0].value;
    
       $.ajax(
          { // $.get n'est qu'une abbréviation de $.ajax avec des options de bases
                url: baseUrl+'/index/imc/format/html/',
              type: "GET",
              dataType: "html",
              data: {taille: _taille, poids: _poids},
              success: tester_rep
          }
       );
    }
    
    function tester_rep(reponse)
    {
       //dom_ajouterNoeud(document, $('#idImc')[0], "h1", "test ajout dynamique")
       
       $('#idImc')[0].innerHTML = reponse;
    }
    Et enfin mon IndexController :

    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
     
    <?php
     
    class IndexController extends Zend_Controller_Action
    {
        private $calc;
     
        public function init()
        {
            /* Initialize action controller here */
     
          $ajaxContext = $this->_helper->getHelper('AjaxContext');
    	   $ajaxContext->addActionContext('imc', 'json')
    	               ->initContext();
     
        }
     
        public function indexAction()
        {
            // action body
     
        }
     
        public function imcAction()
        {
            // action body     
     
          $taille = $_GET['taille'];
          $poids = $_GET['poids'];
     
          $imc = $this->calc->imc($taille, $poids);            
     
          echo $imc;            
        }
     
        public function preDispatch()
        {
    		parent::preDispatch();
     
          $this->calc = new Perso_CalculateurImc();
    	 }
    }
    l'url que je transmet me permet bien "d'atteindre" mon action imcAction.

    Mais un truc m'empêche quand même de dormir :

    Mon baseurl vaut "/test2/public".
    Donc l'url complete transmise dans $.ajax() est : "/test2/public/index/imc/format/html/".

    Or mon IndexController se trouve dans "\test2\application\controllers".
    Donc pour moi, l'url à transmettre à $.ajax() devrait plutôt être : "\test2\application\controllers\index\imc\format/html/"

    Bref, je ne comprends pas trop comment zf retrouve l'action imcAction de mon controleur IndexController puisque le chemin que je lui indique est à priori faux. Si quelqu'un peut m'éclairer.

    Je voudrais être sûr que ça ne fonctionne pas par hasard.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 118
    Points : 184
    Points
    184
    Par défaut
    Bonjour,

    "/test2/public/index/imc/format/html/".
    est juste car pour ZF toutes adresses sont interprétées comme une composante de
    baseUrl/nom-controller/nom-action/param1/val1/param2/val2/...

    donc :
    - baseUrl = test2/public ( car si je ne trompe pas ton index.php est dans le répertoire public)
    - controller = index
    - action = imc
    - param1 = format
    - val1 = html

    par contre tu peux également utiliser
    $this->serverUrl().$this->baseUrl() ton adresse sera absolu dans ce cas.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 71
    Points : 58
    Points
    58
    Par défaut
    Oki ! En fait, je voulais juste savoir si c'était normal, si zf fonctionnait ainsi chez tout le monde. Donc merci bien.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récuparation de l URL de IE
    Par Al_co dans le forum Langage
    Réponses: 4
    Dernier message: 24/04/2008, 08h39
  2. [VB6] fonction d' encodage URL en VB
    Par jeanseb dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/01/2003, 11h16
  3. URL d'Internet Explorer
    Par dbourni dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 06/12/2002, 08h56
  4. [web] tester la validiter d'une URL
    Par zebiloute dans le forum Web
    Réponses: 4
    Dernier message: 25/11/2002, 16h51
  5. Check Url pour savoir si erreur 404 ou si le site existe
    Par Clément[Delphi] dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/08/2002, 13h49

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