From 2f0b557d27396ef73c13172c9f76d311336d7b33 Mon Sep 17 00:00:00 2001 From: Yves P Date: Wed, 21 Jun 2017 21:25:32 +0200 Subject: [PATCH 01/10] [fr] Follows #4891 --- fr/development/routing.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fr/development/routing.rst b/fr/development/routing.rst index cd84e63ab6..a4373fc9bf 100644 --- a/fr/development/routing.rst +++ b/fr/development/routing.rst @@ -963,7 +963,7 @@ Vous pouvez spécifier un type d'inflection alternatif en utilisant l'option Router::scope('/', function ($routes) { $routes->resources('BlogPosts', [ 'inflect' => 'dasherize' // Utilisera ``Inflector::dasherize()`` - ]; + ]); }) Ce qui est au-dessus va générer des URLs de style **/blog-posts/***. From 5b74aee2c40c26b0cb56123d2ce54cdbc45e566d Mon Sep 17 00:00:00 2001 From: Yves P Date: Wed, 21 Jun 2017 21:33:17 +0200 Subject: [PATCH 02/10] [fr] Follows #4903 --- fr/installation.rst | 68 +++++++++++++++++---------------------------- 1 file changed, 26 insertions(+), 42 deletions(-) diff --git a/fr/installation.rst b/fr/installation.rst index f4ecb3cb35..410fff2348 100755 --- a/fr/installation.rst +++ b/fr/installation.rst @@ -482,22 +482,32 @@ donc nécessaire de créer les URLs réécrites disponibles dans la configuratio du site. Ceci se fait habituellement dans ``/etc/nginx/sites-available/your_virtual_host_conf_file``. Selon votre configuration, vous devrez modifier cela, mais à tout le moins, vous aurez -besoin de PHP fonctionnant comme une instance FastCGI: +besoin de PHP fonctionnant comme une instance FastCGI. +La configuration suivante redirige la requête vers ``webroot/index.php`` : + +.. code-block:: nginx + + location / { + try_files $uri $uri/ /index.php?$args; + } + +Un extrait de directive "server" ci-dessous : .. code-block:: nginx server { listen 80; + listen [::]:80; server_name www.example.com; - rewrite ^(.*) http://example.com$1 permanent; + return 301 http://example.com$request_uri; } server { listen 80; + listen [::]:80; server_name example.com; - # root directive should be global - root /var/www/example.com/public/webroot/; + root /var/www/example.com/public/webroot; index index.php; access_log /var/www/example.com/log/access.log; @@ -509,48 +519,22 @@ besoin de PHP fonctionnant comme une instance FastCGI: location ~ \.php$ { try_files $uri =404; - include /etc/nginx/fastcgi_params; - fastcgi_pass 127.0.0.1:9000; - fastcgi_index index.php; + include fastcgi_params; + fastcgi_pass 127.0.0.1:9000; + fastcgi_index index.php; + fastcgi_intercept_errors on; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } -Sur certains serveurs (Comme Ubuntu 14.04) la configuration ci-dessus ne -fonctionnera pas d'emblée et la documentation de nginx recommande une approche -différente de toute façon -(http://nginx.org/en/docs/http/converting_rewrite_rules.html). Vous pourriez -essayer ce qui suit (vous remarquerez que ceci n'est que pour un unique block -{} de serveur, plutôt que deux, si bien que si vous voulez que example.com -accède à votre application CakePHP en plus de www.example.com, consultez le -lien nginx ci-dessus): - -.. code-block:: nginx - - server { - listen 80; - server_name www.example.com; - rewrite 301 http://www.example.com$request_uri permanent; - - # root directive should be global - root /var/www/example.com/public/webroot/; - index index.php; - - access_log /var/www/example.com/log/access.log; - error_log /var/www/example.com/log/error.log; - - location / { - try_files $uri /index.php?$args; - } - - location ~ \.php$ { - try_files $uri =404; - include /etc/nginx/fastcgi_params; - fastcgi_pass 127.0.0.1:9000; - fastcgi_index index.php; - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - } - } +.. note:: + Des modifications récentes de PHP-FPM sont configuré pour écouter le socket + unix php-fpm plutôt que le port TCP 9000 de l'adresse 127.0.0.1. Si vous + avez une erreur "502 bad gateway errors" avec la configuration ci-dessus, + essayez de mettre à jour ``fastcgi_pass`` en pointant sur le socket unix + Recent configurations of PHP-FPM are set to listen to the unix php-fpm + (ex: fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;) plutôt que le port + TCP. IIS7 (serveurs Windows) ----------------------- From 3e64c373666a3e8dc0d8a815a5b564757c3dd942 Mon Sep 17 00:00:00 2001 From: Yves P Date: Wed, 21 Jun 2017 21:34:56 +0200 Subject: [PATCH 03/10] [fr] Follows #4923 --- fr/console-and-shells.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fr/console-and-shells.rst b/fr/console-and-shells.rst index 40ec5fcd00..fe6638e329 100644 --- a/fr/console-and-shells.rst +++ b/fr/console-and-shells.rst @@ -358,7 +358,7 @@ Le tableau devra avoir une clé ``command`` ainsi qu'une clé ``extra``:: // En passant la commande via une chaîne $this->dispatchShell([ - 'command' => 'schema create Blog --plugin Blog' + 'command' => 'schema create Blog --plugin Blog', 'extra' => [ 'foo' => 'bar' ] @@ -366,7 +366,7 @@ Le tableau devra avoir une clé ``command`` ainsi qu'une clé ``extra``:: // En passant la commande via un tableau $this->dispatchShell([ - 'command' => ['schema', 'create', 'Blog', '--plugin', 'Blog'] + 'command' => ['schema', 'create', 'Blog', '--plugin', 'Blog'], 'extra' => [ 'foo' => 'bar' ] From 1eb4a3149af9181215f63bac9ce46fcc770fa130 Mon Sep 17 00:00:00 2001 From: Yves P Date: Wed, 21 Jun 2017 21:35:48 +0200 Subject: [PATCH 04/10] [fr] Follows #4926 --- fr/controllers/request-response.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fr/controllers/request-response.rst b/fr/controllers/request-response.rst index 3162fbe3de..d0bbd0f174 100644 --- a/fr/controllers/request-response.rst +++ b/fr/controllers/request-response.rst @@ -46,6 +46,9 @@ Paramètres de la Requête $controllerName = $this->request->getParam('controller'); + // Avant 3.4.0 + $controllerName = $this->request->param('controller'); + Tous les éléments de route :ref:`route-elements` sont accessibles à travers cette interface. From 81d187c8896f4393d6b0677118b64984e858f2e5 Mon Sep 17 00:00:00 2001 From: Yves P Date: Wed, 21 Jun 2017 21:36:30 +0200 Subject: [PATCH 05/10] [fr] Follows #4929 --- fr/controllers/request-response.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fr/controllers/request-response.rst b/fr/controllers/request-response.rst index d0bbd0f174..45ce984268 100644 --- a/fr/controllers/request-response.rst +++ b/fr/controllers/request-response.rst @@ -84,7 +84,7 @@ Les paramètres Querystring peuvent être lus en utilisant la méthode ``getQuer $page = $this->request->query('page'); Vous pouvez soit directement accéder à la propriété demandée, soit vous pouvez -utiliser ``query()`` pour lire l'URL requêtée sans erreur. Toute clé qui +utiliser ``getQuery()`` pour lire l'URL requêtée sans erreur. Toute clé qui n'existe pas va retourner ``null``:: $foo = $this->request->getQuery('valeur_qui_n_existe_pas'); From 694539b4092037030616d303e7254aa71393a825 Mon Sep 17 00:00:00 2001 From: Yves P Date: Wed, 21 Jun 2017 22:24:01 +0200 Subject: [PATCH 06/10] [fr] Follows #4933 --- fr/orm/database-basics.rst | 4 ++-- fr/orm/query-builder.rst | 46 +++++++++++++++++++++++++++++++++++--- 2 files changed, 45 insertions(+), 5 deletions(-) diff --git a/fr/orm/database-basics.rst b/fr/orm/database-basics.rst index 28915d1d0f..f744a8c210 100644 --- a/fr/orm/database-basics.rst +++ b/fr/orm/database-basics.rst @@ -763,8 +763,8 @@ supplémentaires et l'exécuter. .. _database-basics-binding-values: -Lier les Valeurs ----------------- +Lier les Valeurs (Binding) +-------------------------- Une fois que vous avez créé une requête préparée, vous voudrez peut-être lier des données supplémentaires. Vous pouvez lier plusieurs valeurs en une diff --git a/fr/orm/query-builder.rst b/fr/orm/query-builder.rst index 0a79f155d6..ec250254cf 100644 --- a/fr/orm/query-builder.rst +++ b/fr/orm/query-builder.rst @@ -1364,9 +1364,25 @@ Prévention contre les Injections SQL Alors que l'ORM et les couches d'abstraction de base de données empêchent la plupart des problèmes relatifs aux injections SQL, il est toujours possible que -vous soyez vulnérables face à une utilisation incorrecte. Lorsque vous utilisez -le constructeur de fonctions, les noms de colonnes ne doivent pas contenir de -données provenant d'utilisateurs:: +vous soyez vulnérables face à une utilisation incorrecte. + +Lorsque vous utilisez des tableaux de conditions, la clé (la partie à gauche) +ou bien une valeur seule ne doivent pas contenir de données utilisateur:: + + $query->where([ + // Utiliser cette clé est dangereux car elle sera insérée dans la + // requête générée telle quelle + $userData => $value, + + // Le même commentaire s'applique pour les valeurs seule : il est + // dangereux de les utiliser avec des données utilisateur + $userData, + "MATCH (comment) AGAINST ($userData)", + 'created < NOW() - ' . $userData + ]); + +Lorsque vous utilisez le constructeur de fonctions, les noms de colonnes ne +doivent pas contenir de données provenant d'utilisateurs:: $query->where(function ($exp) use ($userData, $values) { // Les noms de colonnes dans toutes les expressions ne sont pas sûrs. @@ -1388,6 +1404,30 @@ Les expressions brutes ne sont jamais sécurisées:: $expr = $query->newExpr()->add($userData); $query->select(['two' => $expr]); +Lier les Valeurs (Binding) +-------------------------- + +Il est possible de protéger vos requêtes en utilisant le "binding". +De la même manière que vous pouvez :ref:`"binder" des valeurs pour les requêtes préparés `, +des valeurs peuvent être "bindées" aux requêtes en utilisant la méthode :php:meth:`Cake\\Database\\Query::bind()`. + +L'exemple ci-dessous est une alternative sûre par rapport à la version donnée +plus haut, qui serait vulnérable à une injection SQL:: + + $query + ->where([ + 'MATCH (comment) AGAINST (:userData)', + 'created < NOW() - :moreUserData' + ]) + ->bind(':userData', $userData, 'string') + ->bind(':moreUserData', $moreUserData, 'datetime'); + +.. note:: + + Contrairement à :php:meth:`Cake\\Database\\StatementInterface::bindValue()`, + ``Query::bind()`` a besoin que vous passiez les "placeholders" en incluant + les deux-points (``:``) ! + Plus de Requêtes Complexes ========================== From fdaf89471ae7b16eaa65395ff2e711f267c889a4 Mon Sep 17 00:00:00 2001 From: Yves P Date: Wed, 21 Jun 2017 22:28:02 +0200 Subject: [PATCH 07/10] [fr] Follows #4949 --- fr/core-libraries/email.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/fr/core-libraries/email.rst b/fr/core-libraries/email.rst index cf59529c98..d0d77d139b 100644 --- a/fr/core-libraries/email.rst +++ b/fr/core-libraries/email.rst @@ -592,6 +592,12 @@ Vous pourriez par exemple ajouter ce qui suit à votre ``UserMailer``:: } } +L'objet mailer serait ainsi enregistré en tant qu'écouteur (listeners) +d'événement et la méthode ``onRegistration()`` serait appellée à chaque fois +que l'événement ``Model.afterSave`` serait déclenché. Plus d'information sur +comment enregistrer des objets écouteurs d'événements sont disponibles dans la +documentation :ref:`registering-event-listeners`. + .. meta:: :title lang=fr: Email :keywords lang=fr: envoyer mail,email emmetteur sender,envelope sender,classe php,database configuration,sending emails,meth,shells,smtp,transports,attributes,array,config,flexibilité,php email,nouvel email,sending email,models From 66c853af1cdca536f32766f28103d1bdaf64a681 Mon Sep 17 00:00:00 2001 From: Yves P Date: Wed, 21 Jun 2017 22:38:39 +0200 Subject: [PATCH 08/10] [fr] Follows #4952 --- fr/core-libraries/email.rst | 178 +++++++++++++++++++++--------------- 1 file changed, 104 insertions(+), 74 deletions(-) diff --git a/fr/core-libraries/email.rst b/fr/core-libraries/email.rst index d0d77d139b..be211818f8 100644 --- a/fr/core-libraries/email.rst +++ b/fr/core-libraries/email.rst @@ -23,25 +23,25 @@ Premièrement, vous devez vous assurer que la classe est chargée:: Après avoir chargé ``Email``, vous pouvez envoyer un email avec ce qui suit:: $email = new Email('default'); - $email->setFrom(['me@example.com' => 'My Site']) - ->setTo('you@example.com') - ->setSubject('About') + $email->from(['me@example.com' => 'My Site']) + ->to('you@example.com') + ->subject('About') ->send('My message'); Puisque les méthodes de setter d'``Email`` retournent l'instance de la classe, vous pouvez définir ses propriétés avec le chaînage des méthodes. -``Email`` comporte plusieurs méthodes pour définir les destinataires - ``setTo()``, -``setCc()``, ``setBcc()``, ``addTo()``, ``addCc()`` et ``addBcc()``. La principale +``Email`` comporte plusieurs méthodes pour définir les destinataires - ``to()``, +``cc()``, ``bcc()``, ``addTo()``, ``addCc()`` et ``addBcc()``. La principale différence est que les trois premières méthodes vont réinitialiser ce qui était déjà défini et les suivantes vont ajouter plus de destinataires dans leur champs respectifs:: $email = new Email(); - $email->setTo('to@example.com', 'To Example'); + $email->to('to@example.com', 'To Example'); $email->addTo('to2@example.com', 'To2 Example'); // Les destinaitres de l'email sont: to@example.com et to2@example.com - $email->setTo('test@example.com', 'ToTest Example'); + $email->to('test@example.com', 'ToTest Example'); // Le destinaitre de l'email est: test@example.com Choisir l'émetteur @@ -49,10 +49,10 @@ Choisir l'émetteur Quand on envoie des emails de la part d'autre personne, c'est souvent une bonne idée de définir l'émetteur original en utilisant le header Sender. -Vous pouvez faire ceci en utilisant ``setSender()``:: +Vous pouvez faire ceci en utilisant ``sender()``:: $email = new Email(); - $email->setSender('app@example.com', 'MyApp emailer'); + $email->sender('app@example.com', 'MyApp emailer'); .. note:: @@ -60,6 +60,10 @@ Vous pouvez faire ceci en utilisant ``setSender()``:: envoie un mail de la part d'une autre personne. Cela les empêche d'obtenir tout message sur la délivrance. +.. deprecated:: 3.4.0 + Utilisez plutôt ``setSender()``. + + .. _email-configuration: Configuration @@ -78,10 +82,10 @@ votre application sans données de configuration, et éviter de dupliquer, ce qu rend la maintenance et le déploiement moins compliqués. Pour charger une configuration prédéfinie, vous pouvez utiliser la méthode -``setProfile()`` ou la passer au constructeur d'``Email``:: +``profile()`` ou la passer au constructeur d'``Email``:: $email = new Email(); - $email->setProfile('default'); + $email->profile('default'); //ou dans le constructeur:: $email = new Email('default'); @@ -90,7 +94,7 @@ Plutôt que de passer une chaîne avec le bon nom de configuration prédéfini, vous pouvez aussi juste charger un tableau d'options:: $email = new Email(); - $email->setProfile(['from' => 'me@example.org', 'transport' => 'my_custom']); + $email->profile(['from' => 'me@example.org', 'transport' => 'my_custom']); //or dans le constructeur:: $email = new Email(['from' => 'me@example.org', 'transport' => 'my_custom']); @@ -99,10 +103,13 @@ vous pouvez aussi juste charger un tableau d'options:: Le profil d'email ``default`` est automatiquement défini quand une instance ``Email`` est créée. +.. deprecated:: 3.4.0 + Utilisez ``setProfile()`` à la place de ``profile()``. + Configurer les Transports ------------------------- -.. php:staticmethod:: setConfigTransport($key, $config = null) +.. php:staticmethod:: configTransport($key, $config = null) Les messages d'Email sont délivrés par les transports. Différents transports vous permettent d'envoyer les messages par la fonction ``mail()`` de PHP, @@ -115,12 +122,12 @@ exemple de configuration des transports ressemblerai à ceci:: use Cake\Mailer\Email; // Exemple de configuration de Mail - Email::setConfigTransport('default', [ + Email::configTransport('default', [ 'className' => 'Mail' ]); // Exemple de configuration SMTP. - Email::setConfigTransport('gmail', [ + Email::configTransport('gmail', [ 'host' => 'ssl://smtp.gmail.com', 'port' => 465, 'username' => 'my@gmail.com', @@ -134,7 +141,7 @@ valeur. Vous pouvez aussi activer TLS SMTP en utilisant l'option ``tls``:: use Cake\Mailer\Email; - Email::setConfigTransport('gmail', [ + Email::configTransport('gmail', [ 'host' => 'smtp.gmail.com', 'port' => 587, 'username' => 'my@gmail.com', @@ -161,13 +168,15 @@ Les options de configuration peuvent également être fournies en tant que chain :term:`DSN`. C'est utile lorsque vous travaillez avec des variables d'environnement ou des fournisseurs :term:`PaaS`:: - Email::setConfigTransport('default', [ + Email::configTransport('default', [ 'url' => 'smtp://my@gmail.com:secret@smtp.gmail.com:465?tls=true', ]); Lorsque vous utilisez une chaine DSN, vous pouvez définir des paramètres/options supplémentaires en tant qu'arguments de query string. +.. deprecated:: 3.4.0 + Utilisez ``setConfigTransport()`` à la place de ``configTransport()``. .. php:staticmethod:: dropTransport($key) @@ -184,48 +193,48 @@ habituelles d'email dans des profiles réutilisables. Votre application peut avoir autant de profiles que nécessaire. Les clés de configuration suivantes sont utilisées: -- ``'from'``: Email ou un tableau d'emmeteur. Regardez ``Email::setFrom()``. +- ``'from'``: Email ou un tableau d'emmeteur. Regardez ``Email::from()``. - ``'sender'``: Email ou un tableau d'émetteur réel. Regardez - ``Email::setSender()``. -- ``'to'``: Email ou un tableau de destination. Regardez ``Email::setTo()``. -- ``'cc'``: Email ou un tableau de copy carbon. Regardez ``Email::setCc()``. + ``Email::sender()``. +- ``'to'``: Email ou un tableau de destination. Regardez ``Email::to()``. +- ``'cc'``: Email ou un tableau de copy carbon. Regardez ``Email::cc()``. - ``'bcc'``: Email ou un tableau de copy carbon blind. Regardez - ``Email::setBcc()``. + ``Email::bcc()``. - ``'replyTo'``: Email ou un tableau de répondre à cet e-mail. Regardez - ``Email::setReplyTo()``. + ``Email::replyTo()``. - ``'readReceipt'``: Adresse Email ou un tableau d'adresses pour recevoir un - récepissé de lecture. Regardez ``Email::setReadReceipt()``. + récepissé de lecture. Regardez ``Email::readReceipt()``. - ``'returnPath'``: Adresse Email ou un tableau des adresses à retourner si - vous avez une erreur. Regardez ``Email::setReturnPath()``. + vous avez une erreur. Regardez ``Email::returnPath()``. - ``'messageId'``: ID du Message de l'e-mail. Regardez - ``Email::setMessageId()``. -- ``'subject'``: Sujet du message. Regardez ``Email::setSubject()``. + ``Email::messageId()``. +- ``'subject'``: Sujet du message. Regardez ``Email::subject()``. - ``'message'``: Contenu du message. Ne définissez pas ce champ si vous utilisez un contenu rendu. - ``'priority'``: Priorité de l'email, exprimée avec un nombre (généralement de 1 à 5, 1 étant la priorité la plus haute). -- ``'headers'``: Headers à inclure. Regardez ``Email::setHeaders()``. +- ``'headers'``: Headers à inclure. Regardez ``Email::headers()``. - ``'viewRender'``: Si vous utilisez un contenu rendu, définissez le nom de - classe de la vue. Regardez ``Email::setViewRenderer()``. + classe de la vue. Regardez ``Email::viewRenderer()``. - ``'template'``: Si vous utilisez un contenu rendu, définissez le nom du - template. Regardez ``Email::setTemplate()``. + template. Regardez ``Email::template()``. - ``'theme'``: Theme utilisé pour le rendu du template. Voir - ``Email::setTheme()``. + ``Email::theme()``. - ``'layout'``: Si vous utilisez un contenu rendu, définissez le layout à rendre. Si vous voulez rendre un template sans layout, définissez ce champ - à null. Regardez ``Email::setLayout()``. + à null. Regardez ``Email::layout()``. - ``'viewVars'``: Si vous utilisez un contenu rendu, définissez le tableau avec les variables devant être rendus dans la vue. Regardez - ``Email::setViewVars()``. + ``Email::viewVars()``. - ``'attachments'``: Liste des fichiers à attacher. Regardez - ``Email::setAttachments()``. + ``Email::attachments()``. - ``'emailFormat'``: Format de l'email (html, text ou both). Regardez - ``Email::setEmailFormat()``. + ``Email::emailFormat()``. - ``'transport'``: Nom du Transport. Regardez - :php:meth:`~Cake\\Mailer\\Email::setConfigTransport()`. + :php:meth:`~Cake\\Mailer\\Email::configTransport()`. - ``'log'``: Niveau de Log pour connecter les headers de l'email headers et le message. ``true`` va utiliser LOG_DEBUG. Regardez aussi :ref:`logging-levels`. -- ``'helpers'``: Tableau de helpers utilisés dans le template email. ``Email::setHelpers()``. +- ``'helpers'``: Tableau de helpers utilisés dans le template email. ``Email::helpers()``. Toutes ces configurations sont optionnelles, excepté ``'from'``. @@ -234,7 +243,7 @@ Toutes ces configurations sont optionnelles, excepté ``'from'``. Les valeurs des clés ci-dessus utilisant Email ou un tableau, comme from, to, cc etc... seront passées en premier paramètre des méthodes correspondantes. L'equivalent pour - ``Email::setFrom('my@example.com', 'My Site')`` sera défini comme + ``Email::from('my@example.com', 'My Site')`` sera défini comme ``'from' => ['my@example.com' => 'My Site']`` dans votre config. Définir les Headers @@ -244,7 +253,10 @@ Dans ``Email``, vous êtes libre de définir les headers que vous souhaitez. Si vous migrez pour utiliser Email, n'oubliez pas de mettre le préfixe ``X-`` dans vos headers. -Regardez ``Email::setHeaders()`` et ``Email::addHeaders()`` +Regardez ``Email::headers()`` et ``Email::addHeaders()`` + +.. deprecated:: 3.4.0 + Utilisez ``setHeaders()`` à la place de ``headers()``. Envoyer les Emails Templatés ---------------------------- @@ -260,11 +272,11 @@ templates normales:: $email = new Email(); $email - ->setTemplate('welcome') - ->setLayout('fancy') - ->setEmailFormat('html') - ->setTo('bob@example.com') - ->setFrom('app@domain.com') + ->template('welcome') + ->layout('fancy') + ->emailFormat('html') + ->to('bob@example.com') + ->from('app@domain.com') ->send(); Ce qui est au-dessus utilise **src/Template/Email/html/welcome.ctp** pour la @@ -273,11 +285,11 @@ aussi envoyer des messages email templaté multipart:: $email = new Email(); $email - ->setTemplate('welcome') - ->setLayout('fancy') - ->setEmailFormat('both') - ->setTo('bob@example.com') - ->setFrom('app@domain.com') + ->template('welcome') + ->layout('fancy') + ->emailFormat('both') + ->to('bob@example.com') + ->from('app@domain.com') ->send(); Ceci utiliserait les fichiers de template suivants: @@ -293,7 +305,7 @@ Quand on envoie les emails templatés, vous avez la possibilité d'envoyer soit Vous pouvez définir des variables de vue avec ``Email::viewVars()``:: $email = new Email('templated'); - $email->setViewVars(['value' => 12345]); + $email->viewVars(['value' => 12345]); Dans votre email template, vous pouvez utiliser ceux-ci avec:: @@ -304,7 +316,7 @@ pouvez dans des fichiers de template normaux. Par défaut, seul :php:class:`HtmlHelper` est chargé. Vous pouvez chargez des helpers supplémentaires en utilisant la méthode ``helpers()``:: - $email->setHelpers(['Html', 'Custom', 'Text']); + $email->helpers(['Html', 'Custom', 'Text']); Quand vous définissez les helpers, assurez vous d'inclure 'Html' ou il sera retiré des helpers chargés dans votre template d'email. @@ -313,8 +325,8 @@ Si vous voulez envoyer un email en utilisant templates dans un plugin, vous pouvez utiliser la :term:`syntaxe de plugin` familière pour le faire:: $email = new Email(); - $email->setTemplate('Blog.new_comment'); - $email->setLayout('Blog.auto_message'); + $email->template('Blog.new_comment'); + $email->layout('Blog.auto_message'); Ce qui est au-dessus utiliserait les templates à partir d'un plugin de Blog par exemple. @@ -324,36 +336,43 @@ les plugins. Vous pouvez faire ceci en utilisant les themes en disant à Email d'utiliser le bon theme en utilisant la méthode ``Email::theme()``:: $email = new Email(); - $email->setTemplate('Blog.new_comment'); - $email->setLayout('Blog.auto_message'); - $email->setTheme('TestTheme'); + $email->template('Blog.new_comment'); + $email->layout('Blog.auto_message'); + $email->theme('TestTheme'); Ceci vous permet de remplacer le template `new_comment` dans votre theme sans modifier le plugin Blog. Le fichier de template devra être créé dans le chemin suivant: **src/Template/Plugin/TestTheme/Plugin/Blog/Email/text/new_comment.ctp**. +.. deprecated:: 3.4.0 + + * Utilisez ``setTempalte()`` à la place de ``template()``. + * Utilisez ``setLayout()`` à la place de ``layout()``. + * Utilisez ``setTheme()`` à la place de ``theme()``. + + Envoyer les pièces jointes ========================== -.. php:method:: setAttachments($attachments = null) +.. php:method:: attachments($attachments = null) Vous pouvez aussi attacher des fichiers aux messages d'email. Il y a quelques formats différents qui dépendent de quel type de fichier vous avez, et comment vous voulez que les noms de fichier apparaissent dans le mail de réception du client: -1. Chaîne de caractères: ``$email->setAttachments('/full/file/path/file.png')`` va +1. Chaîne de caractères: ``$email->attachments('/full/file/path/file.png')`` va attacher ce fichier avec le nom file.png. -2. Tableau: ``$email->setAttachments(['/full/file/path/file.png'])`` aura le +2. Tableau: ``$email->attachments(['/full/file/path/file.png'])`` aura le même comportement qu'en utilisant une chaîne de caractères. 3. Tableau avec clé: - ``$email->setAttachments(['photo.png' => '/full/some_hash.png'])`` va + ``$email->attachments(['photo.png' => '/full/some_hash.png'])`` va attacher some_hash.png avec le nom photo.png. Le récipiendaire va voir photo.png, pas some_hash.png. 4. Tableaux imbriqués:: - $email->setAttachments([ + $email->attachments([ 'photo.png' => [ 'file' => '/full/some_hash.png', 'mimetype' => 'image/png', @@ -377,6 +396,9 @@ client: fichier en chaîne en utilisant l'option ``data``. Cela vous permet d'attacher les fichiers sans avoir besoin de chemins de fichier vers eux. +.. deprecated:: 3.4.0 + Utilisez ``setAttachments()`` à la place de ``attachments()``. + Utiliser les Transports ======================= @@ -385,17 +407,20 @@ protocoles ou méthodes. CakePHP supporte les transports Mail (par défaut), Debug et SMTP. Pour configurer votre méthode, vous devez utiliser la méthode -:php:meth:`Cake\\Mailer\\Email::setTransport()` ou avoir le transport dans +:php:meth:`Cake\\Mailer\\Email::transport()` ou avoir le transport dans votre configuration:: $email = new Email(); // Use a named transport already configured using Email::setConfigTransport() - $email->setTransport('gmail'); + $email->transport('gmail'); // Use a constructed object. $transport = new DebugTransport(); - $email->setTransport($transport); + $email->transport($transport); + +.. deprecated:: 3.4.0 + Utilisez ``setTransport()`` à la place de ``transport()`` Créer des Transports Personnalisés ---------------------------------- @@ -421,7 +446,7 @@ ressembler à cela:: Vous devez intégrer la méthode ``send(Email $email)`` avec votre logique personnalisée. En option, vous pouvez intégrer la méthode -``setConfig($config)``. ``setConfig()`` est appelée avant send() et vous permet +``config($config)``. ``config()`` est appelée avant send() et vous permet d'accepter les configurations de l'utilisateur. Par défaut, cette méthode met la configuration dans l'attribut protégé ``$_config``. @@ -437,7 +462,7 @@ instance du transport. Exemple:: Faciliter les Règles de Validation des Adresses ----------------------------------------------- -.. php:method:: setEmailPattern($pattern = null) +.. php:method:: emailPattern($pattern = null) Si vous avez des problèmes de validation lors de l'envoi vers des adresses non conformes, vous pouvez faciliter le patron utilisé pour valider les @@ -448,8 +473,10 @@ ISP Japonais:: // Relax le patron d'email, ainsi vous pouvez envoyer // vers des adresses non conformes - $email->setEmailPattern($newPattern); + $email->emailPattern($newPattern); +.. deprecated:: 3.4.0 + Utilisez ``setEmailPattern()`` à la place de ``emailPattern()``. Envoyer des Messages Rapidement =============================== @@ -494,13 +521,16 @@ vous devez définir manuellement le nom de domaine que Email doit utiliser. Il sera utilisé comme nom d'hôte pour l'id du message (puisque il n'y a pas de nom d'hôte dans un environnement CLI):: - $email->setDomain('www.example.org'); + $email->domain('www.example.org'); // Resulte en ids de message comme ```` (valid) // au lieu de ``` (invalid) Un id de message valide peut permettre à ce message de ne pas finir dans un dossier de spam. +.. deprecated:: 3.4.0 + Utilisez ``setDomain()`` à la place de ``domain()``. + Créer des emails réutilisables ============================== @@ -525,17 +555,17 @@ aux utilisateurs. Pour créer votre ``UserMailer``, créez un fichier public function welcome($user) { $this - ->setTo($user->email) - ->setSubject(sprintf('Welcome %s', $user->name)) - ->setTemplate('welcome_mail') // Par défaut le template avec le même nom que le nom de la méthode est utilisé. - ->setLayout('custom'); + ->to($user->email) + ->subject(sprintf('Welcome %s', $user->name)) + ->template('welcome_mail') // Par défaut le template avec le même nom que le nom de la méthode est utilisé. + ->layout('custom'); } public function resetPassword($user) { $this - ->setTo($user->email) - ->setSubject('Reset password') + ->to($user->email) + ->subject('Reset password') ->set(['token' => $user->token]); } } From 7bc275703dec9d676f06cb8233d5a6dcc52bc703 Mon Sep 17 00:00:00 2001 From: Yves P Date: Thu, 22 Jun 2017 08:33:23 +0200 Subject: [PATCH 09/10] [fr] Rephrase a sentence --- fr/installation.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fr/installation.rst b/fr/installation.rst index 410fff2348..af12392fc4 100755 --- a/fr/installation.rst +++ b/fr/installation.rst @@ -528,9 +528,9 @@ Un extrait de directive "server" ci-dessous : } .. note:: - Des modifications récentes de PHP-FPM sont configuré pour écouter le socket - unix php-fpm plutôt que le port TCP 9000 de l'adresse 127.0.0.1. Si vous - avez une erreur "502 bad gateway errors" avec la configuration ci-dessus, + Dans les dernière versions de PHP-FPM, le système est configuré pour écouter + le socket unix php-fpm plutôt que le port TCP 9000 de l'adresse 127.0.0.1. + Si vous avez une erreur "502 bad gateway errors" avec la configuration ci-dessus, essayez de mettre à jour ``fastcgi_pass`` en pointant sur le socket unix Recent configurations of PHP-FPM are set to listen to the unix php-fpm (ex: fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;) plutôt que le port From bfff35ff86d062e8ec2d79928e131d0539c573fd Mon Sep 17 00:00:00 2001 From: Yves P Date: Thu, 22 Jun 2017 08:34:01 +0200 Subject: [PATCH 10/10] =?UTF-8?q?[fr]=C2=A0Typo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fr/orm/query-builder.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fr/orm/query-builder.rst b/fr/orm/query-builder.rst index ec250254cf..24e5a765a6 100644 --- a/fr/orm/query-builder.rst +++ b/fr/orm/query-builder.rst @@ -1408,7 +1408,7 @@ Lier les Valeurs (Binding) -------------------------- Il est possible de protéger vos requêtes en utilisant le "binding". -De la même manière que vous pouvez :ref:`"binder" des valeurs pour les requêtes préparés `, +De la même manière que vous pouvez :ref:`"binder" des valeurs pour les requêtes préparées `, des valeurs peuvent être "bindées" aux requêtes en utilisant la méthode :php:meth:`Cake\\Database\\Query::bind()`. L'exemple ci-dessous est une alternative sûre par rapport à la version donnée