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 :

Participez à la FAQ symfony


Sujet :

Symfony PHP

  1. #1
    Community Manager

    Profil pro
    Inscrit en
    Avril 2014
    Messages
    4 207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2014
    Messages : 4 207
    Points : 13 061
    Points
    13 061
    Par défaut Participez à la FAQ symfony
    Salut

    N'hésitez pas à poster à la suite vos propositions de questions et/ou réponses pour la FAQ symfony

    http://php.developpez.com/faq/?page=sf

    Pour contacter les différents services du club (publications, partenariats, publicité, ...) : Contacts

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Points : 872
    Points
    872
    Par défaut Installer Symfony via PEAR en local
    1. Télécharger le fichier de channel à l'adresse : http://pear.symfony-project.com/channel.xml
    2. Dans la console, taper : pear channel-add "monChemin/channel.xml"
    3. Télécharger la dernière version stable du framework à cette adresse : http://www.symfony-project.org/get/symfony-stable.tgz
    4. Dans la console, exécuter : pear install --offline "monChemin\symfony-stable.tgz"


    Ceci peut être utile lorsque le proxy bloque PEAR pour accéder à pear.symfony-project.com ....

    source : http://www.symfony-project.org/forum/index.php/t/51/
    • Mon blog PHP : http://blog.alterphp.com
    • "Peace cannot be kept by force, it can only be achieved by Understanding" -- Albert Einstein

  3. #3
    Membre averti
    Avatar de phpiste
    Homme Profil pro
    Développeur Senior
    Inscrit en
    Septembre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 251
    Points : 445
    Points
    445
    Billets dans le blog
    7
    Par défaut
    Comment ajouter des lignes js ou css entre <head> et </head> ?
    On peut ajouter des lignes java script simplement dans le fichier de config apps/application/config/view.yml tu trouveras
    un paramètre javascripts: []
    Insérer les noms des fichiers javascript séparé par virgule
    Pareille pour les styles css (stylesheets: [])
    Je suis Développeur Senior ouvert aux opportunités
    Mon blog

  4. #4
    Membre averti
    Avatar de phpiste
    Homme Profil pro
    Développeur Senior
    Inscrit en
    Septembre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 251
    Points : 445
    Points
    445
    Billets dans le blog
    7
    Par défaut
    Comment mettre à jour simultanément + qu’un élément dans votre page avec ajax ?
    Source : http://www.developpez.net/forums/sho...php?t=551166#7


    Pour mettre à jour simultanément + qu’un élément dans votre page Vous devez un peut bricoler la fonction remote_function qui possède une propriété très utile « complete »

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    echo javascript_tag(
      remote_function(array(
        'update'  => 'Zone2',
        'url'     => 'ajax/updatediv1',
    	'script' => true ,
    	'complete' => remote_function(array(						'update'  => 'Zone1',
        						        'url'     => 'Le nom de votre module/le nom de laction qui va mettre à jour Zone1', 	
    'script' => true)), 
      ))
    )
    Lorsque l'appel ajax n:1 se termine ; il déclenche automatiquement l'appel num:2
    Vous pouvez même faire le nombre d’appel que vous souhaiter en ajoutant dans chaque remote_function cette propriété «complete »
    Je suis Développeur Senior ouvert aux opportunités
    Mon blog

  5. #5
    Membre averti
    Avatar de phpiste
    Homme Profil pro
    Développeur Senior
    Inscrit en
    Septembre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 251
    Points : 445
    Points
    445
    Billets dans le blog
    7
    Par défaut
    Quelle est la différence entre
    forward $this->forward(NomDuModule,NomDeL'action)
    et redirect $this->redirect(NomDuModule/NomDeL'action)

    Source :
    http://groups.google.com/group/symfo...f0d98d19?hl=fr

    Foward change simplement l'action en cours pour une autre. On reste dans la même transaction HTTP. Pour le client, on est donc toujours dans la même URL.
    Redirect redirige complètement le serveur vers la page appelé et produit donc une nouvelle requête complète. Du coup au niveau du navigateur ce n'est pas la même URL qui est affichée.
    Je suis Développeur Senior ouvert aux opportunités
    Mon blog

  6. #6
    Membre averti
    Avatar de phpiste
    Homme Profil pro
    Développeur Senior
    Inscrit en
    Septembre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 251
    Points : 445
    Points
    445
    Billets dans le blog
    7
    Par défaut
    Comment je peut transférer un paramètre avec forward comme le cas de redirect ?
    Source :
    http://groups.google.com/group/symfo...f0d98d19?hl=fr

    tu n'as pas besoin de repasser les paramètres à la nouvelle action si tu souhaites accéder aux paramètres envoyés par le client. Par contre si dans ta première action tu crées une variable et que tu veux avoir cette nouvelle variable dans l'action du forward, le plus simple est de l'ajouter dans les variables de la requête en faisant avant le forward :

    $this->getRequest()->getParameterHolder()->set('ma_variable', $valeur) ;
    Dans l'action du forward, tu la récupéres en faisant:
    $this->ma_variable = $this->getRequestParameter('ma_variable) ;
    Je suis Développeur Senior ouvert aux opportunités
    Mon blog

  7. #7
    Membre averti
    Avatar de phpiste
    Homme Profil pro
    Développeur Senior
    Inscrit en
    Septembre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 251
    Points : 445
    Points
    445
    Billets dans le blog
    7
    Par défaut
    Vous etes sous easyphp 2.01 et un message d’erreurs apparait : MySQL extension not loaded
    L’or de génération du schéma de base de données avec propel

    En fait, symfony ne cherchait pas le bon fichier de configuration php.ini.
    Juste copier le php.ini situé dans le repertoire appache d'easyphp et coller le dans le dossier de php5 et changer le path vers le dossier des extensions dans le fichier copié
    Je suis Développeur Senior ouvert aux opportunités
    Mon blog

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Je profite d'une réponse que je viens de donner pour contribuer à la FAQ

    Comment insérer du code personnalisé entre les balises <head></head> (ou ailleurs) ?

    Il suffit d'utiliser un slot. Un slot est un emplacement réservé que l'on peut placer dans n'importe quel élément : un layout, un partial ou un component. Il se comporte alors comme une variable dont on peut modifier à volonté la valeur.
    Le code destiné à être placé dans le slot est contenu dans le response global, et peut être défini n'importe où.
    Exemple: on souhaite intégrer des styles entre les balises <head> et </head> dans un template particulier, et uniquement dans ce template. On commence par placer le slot dans le layout.php de l'application, entre les balises <head> et </head>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php if (has_slot('my_slot_style')): ?>
      <?php include_slot('my_slot_style') ?>
    <?php endif; ?>
    Ensuite, on défint le slot dans le template en question (ex: indexSuccess.php)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php slot('my_slot_style') ?>
      <style type="text/css">
      h1{
      	font-size:36pt;
    	text-decoration:underline;
    	}
      </style>
    <?php end_slot() ?>
    Le style voulu apparaîtra alors uniquement avec le template indexSuccess.

  9. #9
    Membre habitué

    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 12
    Points : 151
    Points
    151
    Par défaut Autocompletion avec Symfony ?
    Tout comme pour le ZendFramework avec Zend Studio for Eclipse, nous pouvons configurer notre outils PDT pour nous faciliter le travail :

    Avant tout télécharger PDT ou Zend Studio for Eclipse

    - Rendez-vous sur PHP Explorer et faites dérouler votre projet
    - Cliquez doit sur Include Paths et sélectionnez ConfigureInclude Path
    - Sélectionnez l'onglet librairies et cliquez sur add External Folder pour ajouter le répertoire de votre projet Symfony /!\ à la racine /!\


    Autocompletion Propel :
    Editez la ligne où se trouve propel.builder.addComments
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    propel.builder.addComments  = true

    Astuces supplémentaires :
    Colorisation de la syntaxe YAML : http://grupy.net/yamlEditor/
    Pour aller encore plus vite : Bash autocompletion linux

  10. #10
    Membre habitué

    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 12
    Points : 151
    Points
    151
    Par défaut Comment faire des tests unitaires ?
    Les tests unitaires sont intégrés dans Symfony et celà est une bonne choses pour connaître l'impacte de nos mises à jour sur nos modules.

    Voilà avant tout, quelques méthodes implémenté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
     
    - diag($msg)  	// Affiche un commentaire sans faire de test
    - ok($test, $msg) // Teste une condition et ne retourne aucunes erreurs si elle est vraie
    - is($value1, $value2, $msg)  // Compare deux valeurs et ne retourne aucunes erreurs si elle est vrai
    - isnt($value1, $value2, $msg) 	// Test l'inégalité de deux valeurs
    - like($string, $regexp, $msg) 	// Test une chaine de caractère à travers un expression régulière
    - unlike($string, $regexp, $msg)    // Contraire de like
    - cmp_ok($value1, $operator, $value2, $msg)  // Compare deux arguments avec un opérateur
    - isa_ok($variable, $type, $msg)    // Vérifie le type d'un argument
    - isa_ok($object, $class, $msg)    // Vérifie la Classe d'un objet
    - can_ok($object, $method, $msg)    // Vérifie une méthode d'une classe ou d'un objet
    - is_deeply($array1, $array2, $msg)  // Vérifie que deux tableaux on les mêmes valeurs
    - include_ok($file, $msg)   // Vérifie si un fichier existe et qu'il a bien pu être inclut
    - fail()     // Une faille : Utile pour tester des excpetions
    - pass()    // Valider : Pour tester une exception
    - skip($msg, $nb_tests)     // Nombre de test à échapper : pour les tests conditionnels
    - todo()   // Message compté comme un test

    Commandes utiles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    > php symfony test-unit maFonction                   ## Test maFonctionTest.php
    > php symfony test-unit maFonction maSecondeFonction  ## Execute deux test : maFonctionTest.php et maSecondeFonctionTest.php
    > php symfony test-unit '*'                          ## Execute tout les test du répertoire test/unit
    Exemple de test unitaire (Cookbook SF) :

    exempleTest.php
    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
     
    include(dirname(__FILE__).'/../bootstrap/unit.php');
     
    // On inclut l'objet que l'on souhaite tester
    class monObjet
    {
      public function maMethode()
      {
         // Contenu de ma méthode
      }
    }
     
    function throw_an_exception()
    { // Envoi d'une exception
      throw new Exception('exception thrown');
    }
     
    // Initialisation de l'objet de test
    $t = new lime_test(16, new lime_output_color());
     
    $t->diag('hello world');
    $t->ok(1 == '1', 'the equal operator ignores type');
    $t->is(1, '1', 'a string is converted to a number for comparison');
    $t->isnt(0, 1, 'zero and one are not equal');
    $t->like('test01', '/test\d+/', 'test01 follows the test numbering pattern');
    $t->unlike('tests01', '/test\d+/', 'tests01 does not follow the pattern');
    $t->cmp_ok(1, '<', 2, 'one is inferior to two');
    $t->cmp_ok(1, '!==', true, 'one and true are not identical');
    $t->isa_ok('foobar', 'string', '\'foobar\' is a string');
    $t->isa_ok(new monObjet(), 'monObjet', 'new creates object of the right class');
    $t->can_ok(new monObjet(), 'maMethode', 'objects of class myObject do have amyMethod method');
    $array1 = array(1, 2, array(1 => 'foo', 'a' => '4'));
    $t->is_deeply($array1, array(1, 2, array(1 => 'foo', 'a' => '4')),
        'the first and the second array are the same');
    $t->include_ok('./fooBar.php', 'the fooBar.php file was properly included');
     
    try
    { // Essai
      throw_an_exception();
      $t->fail('no code should be executed after throwing an exception');
    }
    catch (Exception $e)
    { // Capture de l'exception si il y'en a
      $t->pass('exception catched successfully');
    }
     
    if (!isset($foobar))
    {
      $t->skip('skipping one test to keep the test count exact in the condition', 1);
    }
    else
    {
      $t->ok($foobar, 'foobar');
    }
     
    $t->todo('one test left to do');

  11. #11
    Membre habitué

    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 12
    Points : 151
    Points
    151
    Par défaut Utiliser l'url rewriting
    Lorsque vous créez une application, un fichier situé dans apps/<monapplication>/config se nommant settings.yml, contient les configurations principales de Symfony.

    Pour chaques environnement vous pouvez spécifier une directive :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    .settings:        
        no_script_name:      off          (ou "on" pour l'utilisation du url rewriting)
    Résultat :
    Lors de votre link_to si le no_script_name est en off, index.php sera présent dans votre url (Utilisation de l'INFOPATH seul), dans le cas contraire vous ne le verrez plus .

  12. #12
    Membre habitué

    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 12
    Points : 151
    Points
    151
    Par défaut Comment utiliser le cache de Symfony ?
    Le cache permet d'accélerer ses applications en sauvegardant du code HTML ou une page complète pour les requêtes à venir.

    Symfony possède un système de cache très flexible car il permet de stocker les informations intérprétées des fichiers de configuration YAML, le template, le résultat des actions, un composant partiel.

    Activation du cache :
    Pour activer ou désactiver le cache, vous devez modifier le champ cache du fichier config/settings.yml.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    dev:
      .settings:
        cache:                  on
    Pour configurer le cache de chaques modules, vous devez vous rendre à son fichier cache.yml : "monapplication/modules/monmodule/config/cache.yml"

    Mettre en cache une action
    Avec ceci, vous pourez enregistrer chaques pages de l'action choisie avec un paramètre différent en URL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    votreaction:
      enabled:     on
      with_layout: false   # valeur par defaut
      lifetime:    86400   # valeur par defaut
    Mettre en cache un composant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    _moncomposant:
      enabled:    on
    Mettre en cache un template
    Ici nous regardons si le cache nommé "users" existe, sinon on le stock dans le cache.

    "monapplication/modules/monmodule/templates/untemplate.php"
    :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php if (!cache('users')): ?>
      <?php foreach ($users as $user): ?>
        <?php echo $user->getName() ?>
      <?php endforeach; ?>
      <?php cache_save() ?>
    <?php endif; ?>
    Pour en savoir plus

  13. #13
    Membre habitué

    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 12
    Points : 151
    Points
    151
    Par défaut Changer l'aspect des URLs
    Lorsque vous créez des articles ou des billets pour votre blog, vous voudriez changer l'aspect de vos Urls pour qu'elles soient le plus facilement référencées.

    Nous allons donc pour cela configurer la classe de notre modèle concernée, nous prendrons Articles.php (que Propel à généré à partir du shema.yml "_attributes: { phpName: Articles }"). Commencez par éditez le fichier lib/model/Articles.php :
    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
     
    class Articles extends BaseArticles
    {
       public function getUrlTitle()
       { // Suppression et conversions des caractères
         $result = self::remove_accents($this->getTitle()); 
         $result = strtolower($result);
         $result = preg_replace('/\W/', ' ', $result);
         $result = preg_replace('/\ +/', '-', $result);
         $result = preg_replace('/\-$/', '', $result);
         $result = preg_replace('/^\-/', '', $result); 
     
         return $result;
       }
     
       public function remove_accents($str, $charset='utf-8')
       {
          $str = htmlentities($str, ENT_NOQUOTES, $charset);
     
          $str =  preg_replace('#\&([A-za-z])(?:acute|cedil|circ|grave|ring|tilde|uml)\;#', '\1', $str);
          $str = preg_replace('#\&([A-za-z]{2})(?:lig)\;#', '\1', $str); // pour les ligatures e.g. '&oelig;'
          $str = preg_replace('#\&[^;]+\;#', '', $str); // supprime les autres caractères
     
          return $str;
      }
    }
    Maintenant créons qui se chargera de récupérer l'id de l'article pour pouvoir l'afficher :
    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
     
    public function executePermalink()
    { /* Methode de lien permanent (Doc. Symfony) */
      $posts = PostPeer::doSelect(new Criteria());
      $title = $this->getRequestParameter('title');
      foreach ($articles as $articles)
      {
        if ($post->getStrippedTitle() == $title)
        {
          $this->getRequest()->setParameter('id', $article->getId());
     
          return $this->forward('articles', 'show');
        }
      }
      $this->forward404();
    }
    Dans la page qui listera les articles, changer l'url par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    link_to($article->getTitle(), '@article?title='.$article->getStrippedTitle())
    Pour finir, nous allons annoncer dans le fichier routing.yml, que nous voulons utiliser l'action permalink lorsque nous voudrons afficher un article apps/monapplication/config/routing.yml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    article:
      url:   /articles/:title
      param: { module: articles, action: permalink }

  14. #14
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Fait

  15. #15
    Membre habitué

    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 12
    Points : 151
    Points
    151
    Par défaut Comment rendre mon projet indépendant de la librairie principale (PEAR ou Source) ?
    Question que beaucoup poses pour envoyer leurs projets sur un autre serveur sans pour autant dépendre de la librairie installée avec PEAR ou manuellement avec la source.

    Nous voudrons donc faire une sorte de sandbox maison.

    On fait un freeze et on copie notre librairie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    > symfony project:freeze [votre/repertoire/symfony]
    Sinon vous pouvez avoir recours à la solution manuelle :

    1. Duplication des fichiers lib

    Rendez-vous dans le répertoire ou à été installé Symfony de base : dans le répertoire PEAR si vous avez installé PEAR ou dans le répertoire de la source si avez télécharger la source manuellement.

    Ensuite copiez le contenu du répertoire "symfony/lib" vers le répertoire "~monprojet/lib"

    2. Configuration d'accès aux lib

    Maintenant que notre répertoire librairie à été placé dans notre projet nous n'aurons plus qu'à modifier l'accès à celle-ci.

    Modifions le fichier "config/ProjectConfiguration.class.php" :

    (ligne 2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
     
    require_once dirname(__FILE__).'/../lib/autoload/sfCoreAutoload.class.php';
    //...
    //...
    ?>
    Voilà vous pouvez maintenant utiliser votre projet Symfony indépendamment de votre librairie principale.

  16. #16
    Membre habitué

    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 12
    Points : 151
    Points
    151
    Par défaut Configuration Multi-BD
    Il est possible d'utiliser plusieurs base de données avec Symfony. Pour ce faire, nous devons créer deux configuration dans "config/databases.yml" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    all:
        propel:
          class:   sfPropelDatabase
          param:
            dsn:   pgsql://base1@hostname/database1
     
        database2:
          class:   sfPropelDatabase
          param:
            dsn:   mysql://base2@hostname/database2
    Lorsque cela est fait, faites un clear-cache "symfony cc" et vous pourrez exploiter ces deux bases comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $c = new Criteria();
    $bd1 = ArticlePeer::doSelect($c, Propel::getConnection('propel')); // base 1
    $bd2 = ArticlePeer::doSelect($c, Propel::getConnection('database2')); // base 2
    Pour des utilisations plus avancées, vous pouvez imaginer un système de backup et "RAID" .

    [Edit] Fait : http://php.developpez.com/faq/?page=sf#sf-pls-bdd

  17. #17
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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
    Points : 8 486
    Points
    8 486
    Par défaut Quelle est la meilleure version de symfony pour mon projet ?
    1.3 et 1.4 mise en production en novembre 2009. 1.3 sera maintenue jusqu'en 11/2010 et 1.4 jusqu'en 11/2012. Elles tournent sur PHP >= 5.2.4 et inclut [ame="http://fr.wikipedia.org/wiki/Propel"]propel [/ame]1.4 et doctrine 1.2 (par défaut).
    Les deux versions sont presque identique, la seul différence est que la version 1.3 ajoute le support des fonctionnalités des versions antérieurs. On utilisera donc la 1.3 pour la reprise d'un projet existant et la 1.4 pour tous nouveaux projets.
    Télécharger et installer Symphony 1.3
    Télécharger et installer Symphony 1.4


    1.2
    mise en production en novembre 2009 et maintenue jusqu'en février 2010. Elle tourne avec PHP >= 5.2.4, inclut [ame="http://fr.wikipedia.org/wiki/Propel"]propel [/ame]1.3 (par défaut) et doctrine 1.0. Elle a vu la refonte du système des formulaires.
    Télécharger et installer Symphony 1.2

    1.1 fut une version intermédiaire avant la sortie de la 1.2, sortie en juin 2008, elle n'est plus maintenue depuis juin 2009. Elle n'est plus téléchargeable.

    1.0 est la première version stable, sortie en janvier 2007, elle n'est plus maintenue depuis janvier 2010. Elle tourne avec PHP >= 5.0, inclut [ame="http://fr.wikipedia.org/wiki/Propel"]propel [/ame]1.2 pour l'accès aux données
    Télécharger et installer Symphony 1.0

    http://php.developpez.com/faq/?page=sf#sf-choix-version
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  18. #18
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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
    Points : 8 486
    Points
    8 486
    Par défaut Comment ajouter du JS ou du CSS entre <head> et </head> ?
    Version symfony 1.4

    Au niveau des templates
    On rajoute dans le code du template du module : apps/<app>/modules/<module>/templates/view1Success.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php use_stylesheet('main.css') ?>
    <?php use_javascript('jquery.js') ?>
    qui rajoute cette feuille dans le tableau des feuilles a charger. C'est cette méthode qui est recommandée par symfony à partir de la 1.4.

    Au niveau des fichiers de configuration
    On peut ajouter des lignes JavaScript simplement dans les fichiers de configuration config/view.yml soit au niveau de l'application, soit au niveau de chaque module, on peut y trouver les paramètre :

    Pour le javascript : javascripts: []
    Pour le CSS : stylesheets: []

    Exemple fichier view de l'application : apps/<app>/config/view.yml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    default:
      stylesheets: [main.css]
    va insérer une feuille de style main.css dans chaque page de votre application.

    Exemple fichier view pour un module : apps/<app>/modules/<module>/config/view/yml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    view1:
      stylescheets: [view1.css]
    default
      stylescheets: [module.css, impression.css {media: print}]
    va nous permettre d'insérer pour tous le module (default) ou pour une vue spécifique.

    Le résultat de ces deux exemples nous donnes :
    • pour tous les autres modules : main.css
    • pour notre module sauf view1 : main.css, module.css, impression.css (pour le média print)
    • pour notre module view1 : view1.css,module.css, impression.css (pour le média print), main.css

    Plus d'information : The symfony Reference Book, Le fichier de configuration view.yml

    Générer le code xhtml dans votre template
    Vous devez ajouter dans votre layout.php les lignes qui permettent d'inclure les styles sheet et les java scripts.

    apps/<app>/template/layout.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ...
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
        <head>
            <title><?php include_slot('title', 'Jobeet - Your best job board') ?></title>
            ...
            <?php include_javascripts() ?>
            <?php include_stylesheets() ?>
            ...
        </head>
        ...
    http://php.developpez.com/faq/?page=sf#sf-js-css-head
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 58
    Points : 42
    Points
    42
    Par défaut [REMARQUE] Quelle est la meilleure version de symfony pour mon projet ?
    Je voudrais préciser une chose au niveau de la différence 1.3/1.4 :
    Sachant que la version 1.4 "supprime" pas mal de fonctionnalités par rapport aux versions antérieurs, il sera plus simple pour un débutant de prendre la version 1.3 pour garder une certaine compatibilité avec les divers tutos trouvables sur le net (mêmes les "officiels") qui ne sont pas (encore) mis à jour.

    C'est mon retour d'expérience sur la 1.4, en tant que (grand) débutant

  20. #20
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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
    Points : 8 486
    Points
    8 486
    Par défaut
    Je ne suis pas sur que ce soit le sujet idéal pour un débat sur l'intérêt des différentes version, mais je vais y contribuer

    Je pense qu'il faut, au contraire, commencer sur la 1.4, qui a un fonctionnement largement différent et qui se rapproche un peu plus de la 2.0 a venir. Tant qu'à apprendre, autan apprendre des choses qui vont servir après l'apprentissage.

    La 1.3 ne sera suivie que jusqu'en 11/2010, les projets construits sur celle-ci et utilisant d'anciennes fonctions devront être repris et modifié sur la 1.4 ou la 2 a venir.

    Effectivement, on trouve pas mal de tuto sur des fonctionnalités propres à la 1.0 et qui sont maintenue jusqu'à la 1.3, mais dépréciées et en voie de disparition, parce que largement améliorée par les nouvelles fonctionnalités (surtout autour des objets forms qui montent en puissance au détriment des helpers dans les templates qui disparaissent). Reste que je ne vois pas trop l'intérêt de ce former sur des fonctionnalités promise à la disparition et fondamentalement modifiées juste parce qu'il y a plus de tuto.

    Une seul solution, augmenter les tuto sur la 1.4. Je vais essayer d'y apporter mon grains de sel.

    Dernier argument, l'équipe de symfony recommande fortement de débuter tous nouveaux projets avec la 1.4
    This is the recommended version to use for all new projects.(ici)
    Et je suis près a t'aider dans les méandres de la 1.4 pour en tirer toute la substance !
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

Discussions similaires

  1. Participez à la FAQ JDBC
    Par Mickael Baron dans le forum JDBC
    Réponses: 7
    Dernier message: 23/09/2013, 17h26
  2. Participez à la FAQ Struts
    Par Mickael Baron dans le forum Struts 1
    Réponses: 3
    Dernier message: 05/04/2007, 22h00
  3. [Participez à la FAQ !] La question de la semaine
    Par Giovanny Temgoua dans le forum Langage
    Réponses: 18
    Dernier message: 13/12/2005, 09h58
  4. Participez à la FAQ Java EE
    Par Mickael Baron dans le forum Java EE
    Réponses: 1
    Dernier message: 28/08/2003, 11h49

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