Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] Comment passer une variable javascript dans une zone ?

Posted by pheromix on 04/12/2016 10:08

Quand la page se charge :

class defaultCtrl extends jController {
    /**
    *
    */
    function index()
    {
    	jClasses::inc("commun~toolsSrv") ;
    	
        $oResp = $this->getResponse('html');
        
        $oResp->bodyTpl = "utilisateurs~FoHome" ;
        
        $zUrlGetZone	= jUrl::get("commun~default:getZone") ;
        
        // list of profiles
        $toProfils	= toolsSrv::getAllProfils() ;
        
        $oResp->body->assignZone('oZoneListe', 'utilisateurs~FoListeUtilisateurs', array()) ; // this will be for a dataTable-like zone
        
        $oResp->body->assign("zUrlGetZone", $zUrlGetZone) ;
        $oResp->body->assign("toProfils", $toProfils) ; // this will feed a listbox #selectProfil

        return $oResp;
    }

Le template :

<select name="selectProfil" id="selectProfil">
                  <option value="0">--- Tous ---</option>
                  {foreach $toProfils as $oProfil}
                  <option value="{$oProfil->id_profil}">{$oProfil->lib_profil}</option>
                  {/foreach}
                </select>
<br />
        <div class="ajaxZone">
        	{$oZoneListe}
        </div>

Code de commun~default:getZone :

function getZone() {
        
		$oResp = $this->getResponse('text');

		$zZone = $this->param('zone');
		
		if (is_null($zZone)) {
			throw new Exception('Paramêtre zone requis');
		}
		$tParams = $GLOBALS['gJCoord']->request->params;
        
		$oResp->content = jZone::get($zZone, $tParams);

        return $oResp;
	}

Quand je choisi une option dans le listbox #selectProfil alors la liste affichée dans la zone oZoneListe est filtrée :

{literal}
<script type="text/javascript">
	$(function()
	{
           $("#selectProfil").change(
			function()
			{
				var iProfilId	= $(this).val() ;
                
				var zSrc			= '{/literal}{$zUrlGetZone}{literal}' ;
				var zone			= 'utilisateurs~FoListeUtilisateurs' ;
				$(".ajaxZone").load(zSrc, {zone:zone, iProfilId:iProfilId}) ;
			}
		) ;
        }) ;
</script>

Le problème est que je n'arrive pas à récupérer le paramètre iProfilId dans la zone ! Alors comment passer cette variable dans la zone ?

  [Opened] Comment passer une variable javascript dans une zone ?

Reply #1 Posted by laurentj on 04/13/2016 17:42

Bonjour,

Je ne vois pas trop où pourrait être l'erreur là. Vérifie avec le déboggeur du navigateur que le contenu et l'url de la requête ajax est correct.

Ensuite on ne fait pas ça :

$tParams = $GLOBALS['gJCoord']->request->params;

L'objet request est dans une propriété du contrôleur :

$tParams = $this->request->params;
// ou même
$tParams = $this->params();

Vérifie que tu as bien ce qu'il faut dans $tParams, et que dans les balises options, tu as bien des valeurs.

  [Opened] Comment passer une variable javascript dans une zone ?

Reply #2 Posted by pheromix on 04/14/2016 16:17

merci beaucoup

 
Page
  1. Comment passer une variable javascript dans une zone ?