Permalink
Browse files

updating from symfony-docs

  • Loading branch information...
1 parent 0437586 commit b78d316af1c122cef6ef7867b2c137f337f41b00 @gregquat gregquat committed Nov 18, 2012
View
@@ -1783,7 +1783,7 @@ Apprenez plus grâce au Cookbook
* :doc:`/cookbook/security/remember_me`
.. _`composant de sécurité`: https://github.com/symfony/Security
-.. _`JMSSecurityExtraBundle`: https://github.com/schmittjoh/JMSSecurityExtraBundle
+.. _`JMSSecurityExtraBundle`: http://jmsyst.com/bundles/JMSSecurityExtraBundle/1.2
.. _`FOSUserBundle`: https://github.com/FriendsOfSymfony/FOSUserBundle
.. _`implémenter l'interface \Serializable`: http://php.net/manual/en/class.serializable.php
.. _`functions-online.com`: http://www.functions-online.com/sha1.html
@@ -12,12 +12,12 @@ votre inventaire de produits, ou tout autre objet qui traite des données via un
tierce. Le fait est qu'une application moderne fait beaucoup de choses et est organisée
entre de nombreux objets qui gèrent chaque tâche.
-Dans ce chapitre, nous allons parler d'un objet spécial PHP dans Symfony2 qui vous aide
+Ce chapitre parle d'un objet spécial PHP dans Symfony2 qui vous aide
à instancier, organiser et récupérer les nombreux objets de votre application.
Cet objet, appelé un conteneur de services, vous permettra de standardiser et
centraliser la façon dont les objets sont construits dans votre application. Le conteneur
vous facilite la vie, est super rapide, et met en valeur une architecture qui
-encourage un code réutilisable et découplé. Et puisque toutes les classes fondamentales de Symfony2
+encourage un code réutilisable et découplé. Puisque toutes les classes fondamentales de Symfony2
utilisent le conteneur, vous allez apprendre comment étendre, configurer et utiliser n'importe quel objet
dans Symfony2. En bien des aspects, le conteneur de services est le principal responsable
de la vitesse et de l'extensibilité de Symfony2.
@@ -69,9 +69,10 @@ Définition d'un Conteneur de Services
Un :term:`Conteneur de services` (« service container » ou « *dependency injection container* »
en anglais) est simplement un objet PHP qui gère l'instanciation des services (c-a-d objets).
-Par exemple, supposons que nous avons une simple classe PHP qui envoie des messages email.
-Sans un conteneur de services, nous devons manuellement créer l'objet chaque fois que
-nous en avons besoin :
+
+Par exemple, supposons que vous ayez une simple classe PHP qui envoie des messages email.
+Sans un conteneur de services, vous devez manuellement créer l'objet chaque fois que
+vous en avez besoin :
.. code-block:: php
@@ -82,11 +83,11 @@ nous en avons besoin :
Ceci est assez facile. La classe imaginaire ``Mailer`` nous permet de configurer
la méthode utilisée pour envoyer les messages par e-mail (par exemple ``sendmail``, ``smtp``, etc)
-Mais que faire si nous voulions utiliser le service mailer ailleurs ? Nous ne
-voulons certainement pas répéter la configuration du mailer *chaque* fois que nous devons utiliser
-l'objet ``Mailer``. Que se passe-t-il si nous avions besoin de changer le ``transport`` de
-``sendmail`` à ``smtp`` partout dans l'application ? Nous aurions besoin de traquer
-chaque endroit où nous avons créé un service ``Mailer`` et de le changer.
+Mais que faire si vous voulez utiliser le service mailer ailleurs ? Vous ne
+voulez certainement pas répéter la configuration du mailer *chaque* fois que vous devez utiliser
+l'objet ``Mailer``. Que se passe-t-il si vous avez besoin de changer le ``transport`` de
+``sendmail`` à ``smtp`` partout dans l'application ? Vous auriez besoin de chercher
+chaque endroit où vous avez créé un service ``Mailer`` et de le changer.
.. index::
single: Service Container; Configuring services
@@ -95,7 +96,7 @@ Créer/Configurer les services dans le Conteneur
-----------------------------------------------
Une meilleure solution est de laisser le conteneur de services créer l'objet ``Mailer``
-pour vous. Pour que cela fonctionne, nous devons *spécifier* au conteneur comment
+pour vous. Pour que cela fonctionne, vous devez *spécifier* au conteneur comment
créer le ``Mailer``. Cela se fait via la configuration, qui peut
être spécifiée en YAML, XML ou PHP :
@@ -156,7 +157,7 @@ de raccourci ``get()`` :
}
}
-Lorsque nous demandons le service ``my_mailer`` du conteneur, le conteneur
+Lorsque vous demandez le service ``my_mailer`` du conteneur, le conteneur
construit l'objet et le retourne. Ceci est un autre avantage majeur
d'utiliser le conteneur de services. A savoir, un service est *jamais* construit avant
qu'il ne soit nécessaire. Si vous définissez un service et ne l'utilisez jamais sur une demande, le service
@@ -220,10 +221,11 @@ simple. Les paramètres rendent les définitions de services plus organisées et
));
Le résultat final est exactement le même que précédemment - la différence est seulement dans
-*comment* nous avons défini le service. En entourant les chaînes ``my_mailer.class`` et
-``my_mailer.transport`` par le signe pourcent (``%``), le conteneur sait qu'il
-faut chercher des paramètres avec ces noms. Quand le conteneur est construit, il
-cherche la valeur de chaque paramètre et l'utilise dans la définition du service.
+la *manière* dont vous avez défini le service. En entourant les chaînes
+``my_mailer.class`` et ``my_mailer.transport`` par le signe pourcent (``%``), le
+conteneur sait qu'il faut chercher des paramètres avec ces noms. Quand le conteneur est
+construit, il cherche la valeur de chaque paramètre et l'utilise dans la définition du
+service.
.. note::
@@ -243,8 +245,9 @@ Les paramètres, cependant, ont plusieurs avantages :
* les valeurs de paramètres peuvent être utilisées dans de multiples définitions de service ;
-* Lors de la création d'un service dans un bundle (nous allons voir ceci sous peu), utiliser les paramètres
- permet au service d'être facilement personnalisé dans votre application.
+* Lors de la création d'un service dans un bundle (vous allez voir ceci sous peu),
+ utiliser les paramètres permet au service d'être facilement personnalisé dans votre
+ application.
Le choix d'utiliser ou non des paramètres dépend de vous. Les bundles
tiers de haute qualité utiliseront *toujours* les paramètres puisqu'ils rendent le service
@@ -313,7 +316,7 @@ Importer d'autres Ressources de Configuration de Conteneur
.. tip::
- Dans cette section, nous allons faire référence aux fichiers de configuration de service comme des *ressources*.
+ Dans cette section, vous allez faire référence aux fichiers de configuration de service comme des *ressources*.
C'est pour souligner le fait que, alors que la plupart des ressources de configuration
sont des fichiers (par exemple YAML, XML, PHP), Symfony2 est si flexible que la configuration
pourrait être chargée de n'importe où (par exemple une base de données ou même via un service
@@ -325,8 +328,8 @@ Le conteneur de services est construit en utilisant une ressource de configurati
être importées à l'intérieur de ce fichier d'une manière ou d'une autre. Cela vous donne une
flexibilité absolue sur les services dans votre application.
-La configuration des services externes peut être importée de deux manières différentes. Tout d'abord,
-nous allons parler de la méthode que vous utiliserez le plus souvent dans votre application :
+La configuration des services externes peut être importée de deux manières différentes.
+Tout d'abord, la méthode que vous utiliserez le plus souvent dans votre application :
la directive ``imports``. Dans la section suivante, nous allons introduire la
deuxième méthode, qui est la méthode flexible et préférée pour l'importation de
configuration de services des bundles tiers.
@@ -340,7 +343,7 @@ configuration de services des bundles tiers.
Importer la Configuration avec ``imports``
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Jusqu'ici, nous avons placé notre définition de conteneur de service ``my_mailer`` directement
+Jusqu'ici, vous avez placé notre définition de conteneur de service ``my_mailer`` directement
dans le fichier de configuration de l'application (par exemple ``app/config/config.yml``).
Bien sûr, puisque la classe ``Mailer`` elle-même vit à l'intérieur de ``AcmeHelloBundle``,
il est plus logique de mettre la définition du conteneur ``my_mailer`` à l'intérieur du
@@ -391,7 +394,7 @@ ou ``Resources/config`` n'existent pas, créez-les.
));
La définition elle-même n'a pas changé, seulement son emplacement. Bien sûr, le conteneur
-de service ne connaît pas le nouveau fichier de ressources. Heureusement, nous pouvons
+de service ne connaît pas le nouveau fichier de ressources. Heureusement, vous pouvez
facilement importer le fichier de ressources en utilisant la clé ``imports`` dans
la configuration de l'application.
@@ -439,7 +442,7 @@ les services du noyau de Symfony2, sont habituellement chargés en utilisant une
souple et facile à configurer dans votre application.
Voici comment cela fonctionne. En interne, chaque bundle définit ses services
-comme nous avons vu jusqu'à présent. A savoir, un bundle utilise un ou plusieurs fichiers de
+comme vous l'avez vu jusqu'à présent. A savoir, un bundle utilise un ou plusieurs fichiers de
ressources de configuration (généralement XML) pour spécifier les paramètres et les services pour ce
bundle. Cependant, au lieu d'importer chacune de ces ressources directement à partir de
la configuration de votre application en utilisant la directive ``imports``, vous pouvez simplement
@@ -455,7 +458,7 @@ afin d'accomplir deux choses :
configuration du conteneur de services du bundle.
En d'autres termes, une extension de conteneur de services configure les services pour
-un bundle en votre nom. Et comme nous le verrons dans un instant, l'extension fournit
+un bundle en votre nom. Et comme vous le verrez dans un instant, l'extension fournit
une interface pratique, de haut niveau pour configurer le bundle.
Prenez le ``FrameworkBundle`` - le bundle noyau du framework Symfony2 - comme un
@@ -542,10 +545,10 @@ dans son constructeur, qui est facilement configurable. Comme vous le verrez, la
puissance du conteneur est démontrée lorsque vous avez besoin de créer un service qui
dépend d'un ou plusieurs autres services dans le conteneur.
-Commençons par un exemple. Supposons que nous ayons un nouveau service, ``NewsletterManager`` ,
+Commençons par un exemple. Supposons que vous ayez un nouveau service, ``NewsletterManager`` ,
qui aide à gérer la préparation et l'envoi d'un message email à
une liste d'adresses. Bien sûr, le service ``my_mailer`` excelle
-vraiment pour envoyer des messages email, donc nous allons l'utiliser dans ``NewsletterManager``
+vraiment pour envoyer des messages email, donc vous allez l'utiliser dans ``NewsletterManager``
pour gérer l'envoi effectif des messages. Cette fausse classe pourrait ressembler à
quelque chose comme ceci :
@@ -567,7 +570,7 @@ quelque chose comme ceci :
// ...
}
-Sans utiliser le conteneur de services, nous pouvons créer une nouvelle ``NewsletterManager``
+Sans utiliser le conteneur de services, vous pouvez créer une nouvelle ``NewsletterManager``
assez facilement à l'intérieur d'un contrôleur :
.. code-block:: php
@@ -820,7 +823,7 @@ Dans Symfony2, vous allez constamment utiliser les services fournis par le noyau
autres bundles tiers pour effectuer des tâches telles que rendre des templates (``templating``),
envoyer des emails (``mailer``), ou d'accéder à des informations sur la requête (``request``).
-Nous pouvons aller plus loin en utilisant ces services à l'intérieur des services
+Vous pouvez aller plus loin en utilisant ces services à l'intérieur des services
que vous avez créés pour votre application. Modifions le ``NewsletterManager``
afin d'utiliser le vrai service ``mailer`` de Symfony2 (au lieu du faux ``my_mailer``).
Passons aussi le service du moteur de template à ``NewsletterManager``
@@ -883,7 +886,7 @@ du framework.
.. tip::
Soyez sûr que l'entrée ``swiftmailer`` apparaît dans votre configuration de
- l'application. Comme nous l'avons mentionné dans :ref:`service-container-extension-configuration`,
+ l'application. Comme vous l'avez mentionné dans :ref:`service-container-extension-configuration`,
la clé ``swiftmailer`` invoque l'extension du service de
``SwiftmailerBundle``, qui déclare le service ``mailer``.
@@ -323,6 +323,38 @@ faire la chose suivante::
'foo'
);
+Poser des questions et valider la réponse
+-----------------------------------------
+Vous pouvez facilement poser une question et valider une réponse grâce
+aux méthodes préconstruites::
+
+ $dialog = $this->getHelperSet()->get('dialog');
+
+ $validator = function ($value) {
+ if ('' === trim($value)) {
+ throw new \Exception('The value can not be empty');
+ }
+
+ return $value;
+ }
+
+ $password = $dialog->askAndValidate(
+ $output,
+ 'Veuillez entrer le nom du widget',
+ $validator,
+ 20,
+ 'foo'
+ );
+
+Le callback de validation peut être n'importe quelle fonction PHP appelable. Le
+quatrième argument de la méthode :method:`Symfony\\Component\\Console\\Helper::askAndValidate`
+est le nombre maximum d'essais, définissez le à ``false`` pour
+un nombre illimité d'essais. Le cinquième argument est la valeur par défaut.
+
+Le callback doit lancer une exception si la valeur n'est pas acceptable. Veuillez
+noter que le callback **doit** retourner une valeur. La valeur peut être modifiée
+par le callback (elle sera retournée modifiée par le helper).
+
Tester les commandes
--------------------
@@ -388,7 +388,7 @@ vous « dumpez » et dont vous cachez la configuration résultante.
Le ``PhpDumper`` facilite le « dump » du conteneur compilé::
use Symfony\Component\DependencyInjection\ContainerBuilder;
- use Symfony\Component\DependencyInjection\Dumper\PhpDumper
+ use Symfony\Component\DependencyInjection\Dumper\PhpDumper;
$file = __DIR__ .'/cache/container.php';
@@ -72,12 +72,12 @@ GitHub explique en détail les requêtes de mise à jour ou `pull requests`_ .
Attribution-Share Alike 3.0 Unported :doc:`Licence <license>`.
.. tip::
-
- Vos changements apparaissent sur le site symfony.com moins de 15 minutes
- après que l'équipe de documentation a mergé votre pull request. Vous pouvez
- vérifier si vos changements ont introduit des erreurs de syntaxe en allant
- sur la page `Erreurs de génération de la documentation`_ (elle est mise à
- jour chaque nuit à 3h du matin quand le serveur génère la documentation).
+
+ Soyez patient, vos changement peuvent mettre de 15 minutes à plusieurs jours
+ après que l'équipe de documentation a mergé votre pull request avant d'être visibles
+ sur le site symfony.com. Vous pouvez vérifier si vos changements ont introduit des
+ erreurs de syntaxe en allant sur la page `Erreurs de génération de la documentation`_
+ (elle est mise à jour chaque nuit à 3h du matin quand le serveur génère la documentation).
Standards
---------
@@ -185,7 +185,7 @@ cette étape du processus de développement et de déploiement.
Pour utiliser un filtre, vous aurez d'abord besoin de le spécifier dans la
configuration d'Assetic. Ajouter un filtre dans la configuration ne signifie
-pas qu'il est utilisé, mais juste qu'il est prêt à l'être (nous allons l'utiliser
+pas qu'il est utilisé, mais juste qu'il est prêt à l'être (vous allez l'utiliser
ci-dessous).
Par exemple, pour utiliser le JavaScript YUI Compressor, la configuration
@@ -87,7 +87,7 @@ utiliser une passe de compilation::
}
}
-Dans cet exemple, nous retrouvons la définition du service original, et nous changeons
+Dans cet exemple, vous retrouvez la définition du service original, et nous changeons
son nom de classe en notre propre nom de classe.
Lisez :doc:`/cookbook/service_container/compiler_passes` pour savoir comment utiliser
@@ -12,7 +12,7 @@ d'utiliser Symfony2 pour le faire.
Changer les paramètres de la configuration du routeur
-----------------------------------------------------
-Pour dumper les routes Apache, nous devons d'abord modifier les paramètres
+Pour dumper les routes Apache, vous devez d'abord modifier les paramètres
de configuration pour dire à Symfony2 d'utiliser le ``ApacheUrlMatcher`` plutôt
que celui par défaut :
@@ -44,7 +44,7 @@ Pour tester que cela fonctionne, créons une route très basique pour le bundle
defaults: { _controller: AcmeDemoBundle:Demo:hello }
-Maintenant nous générons les règles **url_rewrite** :
+Maintenant générez les règles **url_rewrite** :
.. code-block:: bash
@@ -63,7 +63,7 @@ Ce qui devrait afficher quelque chose du genre :
RewriteRule .* app.php [QSA,L,E=_ROUTING__route:hello,E=_ROUTING_name:%1,E=_ROUTING__controller:AcmeDemoBundle\:Demo\:hello]
Vous pouvez maintenant réécrire le `web/.htaccess` pour utiliser les nouvelles règles.
-Avec notre exemple, cela ressemblerait à ceci :
+Avec cet exemple, cela ressemblerait à ceci :
.. code-block:: apache
@@ -44,7 +44,7 @@ Vous pouvez surcharger le répertoire de cache en surchargeant la méthode
``$this->rootDir`` est le chemin absolu vers le répertoire ``app`` et
``$this->environment`` est l'environnement actuel (c-a-d ``dev``). Dans
-notre cas, nous avons changé l'emplacement du répertoire cache pour qu'il
+ce cas, vous avez changé l'emplacement du répertoire cache pour qu'il
devienne ``app/{environment}/cache``.
.. caution::
@@ -74,7 +74,7 @@ méthode ``getLogDir``::
}
}
-Ici, nous avons changé l'emplacement du répertoire pour ``app/{environment}/logs``.
+Ici, vous avez changé l'emplacement du répertoire pour ``app/{environment}/logs``.
Surcharger le répertoire ``web``
--------------------------------
@@ -31,7 +31,7 @@ dépendant du niveau de contrôle que vous souhaitez :
:ref:`kernel-kernel.exception`.
Tous les templates d'erreur se trouvent dans le ``TwigBundle``. Pour surcharger
-ces templates, nous utilisons simplement la méthode standard qui permet
+ces templates, utilisez simplement la méthode standard qui permet
de surcharger un template qui se trouve dans un bundle. Pour plus d'informations,
voir :ref:`overriding-bundle-templates`.
@@ -11,8 +11,8 @@ ceci fonctionne très bien, les contrôleurs peuvent aussi être définis
en tant que services.
Pour faire référence à un contrôleur qui est défini en tant que service, utilisez
-la notation avec deux-points (:). Par exemple, supposons que nous ayons
-défini un service nommé ``my_controller`` et que nous voulions transmettre
+la notation avec deux-points (:). Par exemple, supposons que vous ayez
+défini un service nommé ``my_controller`` et que vous voulez le transmettre
à une méthode appelée ``indexAction()`` à l'intérieur du service::
$this->forward('my_controller:indexAction', array('foo' => $bar));
@@ -216,7 +216,7 @@ qui correspond à ce qui est retourné après qu'un champ ``file`` ait été sou
return;
}
- // nous utilisons le nom de fichier original ici mais
+ // utilisez le nom de fichier original ici mais
// vous devriez « l'assainir » pour au moins éviter
// quelconques problèmes de sécurité
@@ -15,7 +15,7 @@ Créer une classe de contrainte
Tout d'abord, vous devez créer une classe de contrainte
qui étend la classe :class:`Symfony\\Component\\Validator\\Constraint`::
- // src/Acme/DemoBundle/Validator/constraints/ContainsAlphanumeric.php
+ // src/Acme/DemoBundle/Validator/Constraints/ContainsAlphanumeric.php
namespace Acme\DemoBundle\Validator\Constraints;
use Symfony\Component\Validator\Constraint;
@@ -92,7 +92,7 @@ ses dimensions soient comprises dans un certain intervalle, ajoutez ce qui suit
* minWidth = 200,
* maxWidth = 400,
* minHeight = 200,
- * maxHeight = 400,
+ * maxHeight = 400
* )
*/
protected $headshot;

0 comments on commit b78d316

Please sign in to comment.