Bonjour,

J'aurais besoin d'aide svp.

J'utilise plusieurs sous-domaine et domaine pour une seule App avec CakePHP 2.4.4

Pour cela j'assigne deux variables : $domain et $subdomain

Ensuite j'aimerais récupérer en base l'id du site correspondant de cette façon

if ($domain == $domain_default) // Si le domaine est celui par défaut
    $id_site = getIdsitebysubdomain($subdomain); // On retourne $id_site du sous domaine
else
    $id_site = getIdsitebydomain($domain); // On retourne $id_site du domaine

Je ne sais pas où placer ma condition et mes deux méthodes pour que ma variable $id_site soit global

Merci

6 réponses


kal-el
Réponse acceptée

Pourquoi ne pas placer ton code dans le AppController à l'intérieur du beforeFilter et écrire les valeurs dans l'objet Session :

public function beforeFilter()
{
    if ($domain == $domain_default) 
    {
        Session::write('id_site', getIdsitebysubdomain($subdomain));
    }
    else
    {
        Session::write('id_site', getIdsitebydomain($domain));
    }
}

Ensuite, tu peux récupérer cette valeur de n'importe ou en faisant :

Session::read('id_site');

EDIT : Remplacement de l'objet Configure par Session en accord avec ce qu'a dit @Lartak11. Bien vue :)

</lex>
Auteur

Merci beaucoup kal-el pour ta proposition, c'est exactement ce que je chercher.

Sauf que le Configure::write va s'appliquer à toute l'application, ce qui veut dire que la valeur de la variable sera la même pour tous les domaines et sous-domaines.

</lex>
Auteur

Bonsoir Lartak11,

Tu veux dire que si je fais ceci :

Configure::write('id_site', 1);
Configure::write('id_site', 2);
Configure::read('id_site');

va retourner 1 ?

Non, le second écrasera la valeur du premier, mais le problème, c'est que la valeur de la variable que tu écris avec Configure doit être la même pour tous les utilisateurs et non par rapport à la navigation.
Tu ferais mieux d'écrire dans la session pour ton cas et non dans la configuration.

Configure::write() => écrit dans la configuration de l'application
Session::write() => écrit dans la session de l'utilisateur (bien plus indiqué dans ton cas vu que ça a un rapport avec la navigation de l'utilisateur)
</lex>
Auteur

Ce que tu proposes semble logique en effet, je vais faire quelques tests, merci.