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

Symfony PHP Discussion :

generer une url dans une task


Sujet :

Symfony PHP

  1. #1
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 534
    Par défaut generer une url dans une task
    Bonjour a tous.

    Je souhaite envoyer un mail a mes utilisateurs avec un lien vers un formulaire.
    J'ai trouvé ce lien =>generation url <= qui explique comment.

    Sauf que pour la création de l'url absolue il y a un bleme si on a plusieurs applications.

    en rajoutant ces lignes dans factories.yml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    all:
      routing:
        class: sfPatternRouting
        param:
          generate_shortest_url:            true
          extra_parameters_as_query_string: true
          context:
            host: example.org
    il recree tout les liens generes sur le site en ne conservant que le host.

    ex:
    une application principale frontend et une secondaire backend

    on peut acceder à la principale via:
    http://exemple.org/
    ou
    http://exemple.org/frontend.php

    mais la secondaire que par:
    http://exemple.org/backend.php

    le souci est que si on modifie le fichier factories.yml comme ci dessus, tout les liens générés par url_for perdent la page du controleur, donc plus moyen d'atteindre l'appli secondaire !!!

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Utilise la fonction genUrl() du contrôleur. Le deuxième paramètre permet de spécifier que l'appel est absolut.

    Ceci devrait te permettre de faire ce que tu veux, sans avoir à modifier le factories.

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 534
    Par défaut
    je me permet de revenir sur ce sujet.
    j'ai essaye le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $url=sfContext::getInstance()->getController()->genUrl('shePlanning/edit?id='.$audit->getId(), true);
    mais ça me donne comme erreur:
    The "default" context does not exist.

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    As-tu initiés l'application (lancé depuis l'index ou équivalent de symfony) ou as-tu testé directement ton objet ?

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 534
    Par défaut
    je reponds un peu en retard.
    Dans une tache, il semblerait que sfContext n'existe pas.

  6. #6
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Mais s'il n'existe pas, tu peux toujours le créer, non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	sfContext::createInstance($this->configuration);
    	    $mailer = sfContext::getInstance()->getMailer();
    [etc]

  7. #7
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 534
    Par défaut
    j'ai tenté, en rajoutant une application dans l'environnement.
    mais:
    1/ des que je rajoute la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sfContext::createInstance($this->configuration);
    j'obtiens ça a l'execution de la tache !!!
    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
    >> sfPatternRouting Connect sfRoute "sf_guard_signin" (/guard/login)
    >> sfPatternRouting Connect sfRoute "sf_guard_signout" (/guard/logout)
    >> sfPatternRouting Connect sfDoctrineRoute "sf_guard_user_filter" (/guard/users
    /filter.:sf_format)
    >> sfPatternRouting Connect sfDoctrineRoute "sf_guard_user_batch" (/guard/users/
    batch.:sf_format)
    >> sfPatternRouting Connect sfDoctrineRoute "sf_guard_user" (/guard/users.:sf_fo
    rmat)
    >> sfPatternRouting Connect sfDoctrineRoute "sf_guard_user_new" (/guard/users/ne
    w.:sf_format)
    >> sfPatternRouting Connect sfDoctrineRoute "sf_guard_user_create" (/guard/users
    .:sf_format)
    >> sfPatternRouting Connect sfDoctrineRoute "sf_guard_user_edit" (/guard/users/:
    id/edit.:sf_format)
    >> sfPatternRouting Connect sfDoctrineRoute "sf_guard_user_update" (/guard/users
    2/ j'obtient comme résultat de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sfContext::getInstance()->getRouting()->generate('travail', array('module'=>'admintravail', 'action'=>'edit', 'id'=>'3'), false);
    ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    symfony/symfony/admintravail?id=3
    et si je met la valeur a true, j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://symfony/symfony/admintravail?id=3
    alors que je devrais, sur mon serveur de test recuperer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost/frontend.php/admintravail/3/edit
    ...

  8. #8
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Je confirme pour le 1/ : j'ai aussi cette sortie en console de temps en temps (de mémoire, c'est surtout quand je nettoye le cache, après elle disparait). Je suppose que ces traces dépendent du niveau de log ou quelque chose du style mais ça n'a pas d'effet secondaire sur la suite de mes tâches, je ne m'en suis donc pas préoccupé plus que ça.

    Pour le reste, en effet, la génération d'url semble avoir une petite faiblesse quand on passe par des tâches. Je passe par une méthode ad hoc pour reconstituer la bonne url :
    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
    sfContext::createInstance($this->configuration);
    [....]
    $routing = $this->getRouting();
    $rootFileUrl = $this->getUrlPrefix(true);
    $myurl =  $rootFileUrl . $routing->generate('ma_route', $monObjet, true),
     
     
        /**
         *
         * @return string
         */
        private function getUrlPrefix($withIndexFile = false) {
    	$out = "";
    	switch ($this->configuration->getEnvironment()) {
    	    case 'prod':
    	    case 'debugprod':
    		$out = "http://www.monsite.fr";
    		if ($withIndexFile) {
    		    $out .= "";
    		}
    		break;
    	    default:
    		$out = "http://localhost:8099";
    		if ($withIndexFile) {
    		    $out .= "/frontend_dev.php";
    		}
    		break;
    	}
     
    	return $out;
        }
    NB : en mettant l'url de la racine web dans un app.yml, ça devrait aussi fonctionner.

Discussions similaires

  1. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 14h35
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 20h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 27/08/2007, 00h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 11h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 14h48

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