Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion en/development/testing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ tests:

.. versionadded:: 3.4.1
Support for PHPUnit 6 was addded. If you're using a PHPUnit version lower
than 5.7.0, your tests classes should either extends Cake's classes or
than 5.7.0, your tests classes should either extends CakePHP's classes or
``PHPUnit_Framework_TestCase``.

Creating Your First Test Case
Expand Down
10 changes: 6 additions & 4 deletions en/orm/deleting-data.rst
Original file line number Diff line number Diff line change
Expand Up @@ -82,11 +82,13 @@ Strict Deletes

.. php:method:: deleteOrFail($entity, $options = [])


Using this method will throw an
:php:exc:`Cake\\ORM\\Exception\\PersistenceFailedException` if the entity is
new, has no primary key value, application rules checks failed or the delete was
aborted by a callback.
:php:exc:`Cake\\ORM\\Exception\\PersistenceFailedException` if :

* the entity is new
* the entity has no primary key value
* application rules checks failed
* the delete was aborted by a callback.

If you want to track down the entity that failed to save, you can use the
:php:meth:`Cake\\ORM\Exception\\PersistenceFailedException::getEntity()` method::
Expand Down
11 changes: 7 additions & 4 deletions en/orm/saving-data.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1112,11 +1112,14 @@ Strict Saving

.. php:method:: saveOrFail($entity, $options = [])


Using this method will throw an
:php:exc:`Cake\\ORM\\Exception\\PersistenceFailedException` if the application
rules checks failed, the entity contains errors or the save was aborted by
a callback. Using this can be helpful when you performing complex database
:php:exc:`Cake\\ORM\\Exception\\PersistenceFailedException` if:

* the application rules checks failed
* the entity contains errors
* the save was aborted by a callback.

Using this can be helpful when you performing complex database
operations without human monitoring, for example, inside a Shell task.

.. note::
Expand Down
18 changes: 15 additions & 3 deletions fr/appendices/3-4-migration-guide.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@
CakePHP 3.4 est une mise à jour de CakePHP 3.3 dont la compatibilité API est
complète. Cette page souligne les changements et améliorations faits dans 3.4.

PHP 5.6 devient le minimum requis
=================================
CakePHP 3.4 a maintenant besoin d'au minimum PHP 5.6.0 puisque PHP 5.5 n'est
plus supporté et ne recevra plus de correctifs de sécurité.

Dépréciations
=============

Expand All @@ -21,13 +26,13 @@ suivent le pattern des "objets immutables" décrit dans le standard PSR-7.

Plusieurs propriétés de ``Cake\Network\Request`` ont été dépréciées :

* ``Request::$params`` est dépréciée. Utilisez ``Request::getParam()`` à la place.
* ``Request::$params`` est dépréciée. Utilisez ``Request::getAttribute('params')`` à la place.
* ``Request::$data`` est dépréciée. Utilisez ``Request::getData()`` à la place.
* ``Request::$query`` est dépréciée. Utilisez ``Request::getQuery()`` à la place.
* ``Request::$query`` est dépréciée. Utilisez ``Request::getQueryParams()`` à la place.
* ``Request::$cookies`` est dépréciée. Utilisez ``Request::getCookie()`` à la place.
* ``Request::$base`` est dépréciée. Utilisez ``Request::getAttribute('base')`` à la place.
* ``Request::$webroot`` est dépréciée. Utilisez ``Request::getAttribute('webroot')`` à la place.
* ``Request::$here`` est dépréciée. Utilisez ``Request::here()`` à la place.
* ``Request::$here`` est dépréciée. Utilisez ``Request::getRequestTarget()`` à la place.
* ``Request::$_session`` a été renommée ``Request::$session``.

Certaines méthodes de ``Cake\Network\Request`` ont été dépréciées :
Expand Down Expand Up @@ -467,3 +472,10 @@ PluginShell
* ``cake plugin load`` et ``cake plugin unload`` supportent maintenant une
option ``--cli`` qui permet de mettre à jour ``bootstrap_cli.php`` à la place
de ``bootstrap.php``.

TestSuite
=========

* Le support de ``PHPUnit 6`` a été ajouté. Puisque cette version du framework
a au minimum besoin de PHP 5.6.0, les versions supportées de PHPUnit sont
maintenant ``^5.7|^6.0``
4 changes: 3 additions & 1 deletion fr/chronos.rst
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,7 @@ Les autres propriétés accessibles sont:
Aides aux Tests
---------------

Quand vous écrivez des tests unitaires, il peut être utile de fixer le time
Quand vous écrivez des tests unitaires, il peut être utile de fixer le *time*
courant. Chronos vous permet de fixer le time courant pour chaque classe.
Pour l'intégrer dans votre processus de démarrage (bootstrap) de suite de tests,
vous pouvez inclure ce qui suit::
Expand All @@ -302,3 +302,5 @@ retournée relativement à la date fixée::
$time = new Chronos(); // 1975-12-25 00:00:00
$time = new Chronos('1 hour ago'); // 1975-12-24 23:00:00

Pour réinitialiser la "fixation" du temps, appelez simplement ``setTestNow()``
sans paramètre ou avec ``null`` comme paramètre.
2 changes: 1 addition & 1 deletion fr/contributing/code.rst
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ suivants:

* Git
* PHP |minphpversion| ou supérieur
* PHPUnit 3.7.0 ou supérieur
* PHPUnit 5.7.0 ou supérieur

Mettez en place vos informations d'utilisateur avec votre nom/titre et adresse
e-mail de travail::
Expand Down
4 changes: 2 additions & 2 deletions fr/core-libraries/email.rst
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,7 @@ d'utiliser le bon theme en utilisant la méthode ``Email::theme()``::
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/View/Themed/TestTheme/Blog/Email/text/new_comment.ctp**.
**src/Template/Plugin/TestTheme/Plugin/Blog/Email/text/new_comment.ctp**.

Envoyer les pièces jointes
==========================
Expand Down Expand Up @@ -421,7 +421,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
``config($config)``. ``config()`` est appelée avant send() et vous permet
``setConfig($config)``. ``setConfig()`` 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``.

Expand Down
11 changes: 9 additions & 2 deletions fr/development/errors.rst
Original file line number Diff line number Diff line change
Expand Up @@ -81,11 +81,11 @@ une logique de gestion des erreurs personnalisée. Un exemple serait::
{
public function _displayError($error, $debug)
{
return 'Il y a eu une erreur!';
echo 'Il y a eu une erreur!';
}
public function _displayException($exception)
{
return 'Il y a eu un exception';
echo 'Il y a eu un exception';
}
}

Expand Down Expand Up @@ -327,6 +327,13 @@ Autres Exceptions Intégrées

Une behavior du model n'a pas pu être trouvé.

.. php:exception:: PersistenceFailedException

Une entity n'a pas pu être sauvegardée / supprimée en utilisant :php:meth:`Cake\\ORM\\Table::saveOrFail()` ou
:php:meth:`Cake\\ORM\\Table::deleteOrFail()`

.. versionadded:: 3.4.1 PersistenceFailedException a été ajoutée.

.. php:namespace:: Cake\Datasource\Exception

.. php:exception:: RecordNotFoundException
Expand Down
10 changes: 9 additions & 1 deletion fr/development/testing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ Pour installer PHPUnit avec Composer:

.. code-block:: bash

$ php composer.phar require --dev phpunit/phpunit:"^5.7|^6.0"

// Avant CakePHP 3.4.1
$ php composer.phar require --dev phpunit/phpunit

Ceci va ajouter la dépendance à la section ``require-dev`` de votre
Expand Down Expand Up @@ -140,7 +143,7 @@ conventions. En ce qui concerne les tests:
#. Les noms de ces fichiers doivent finir par **Test.php** plutôt que juste
**.php**.
#. Les classes contenant les tests doivent étendre ``Cake\TestSuite\TestCase``,
``Cake\TestSuite\ControllerTestCase`` ou ``\PHPUnit_Framework_TestCase``.
``Cake\TestSuite\IntegrationTestCase`` ou ``\PHPUnit\Framework\TestCase``.
#. Comme les autres noms de classe, les noms de classe des cas de test doivent
correspondre au nom de fichier. **RouterTest.php** doit contenir
``class RouterTest extends TestCase``.
Expand All @@ -149,6 +152,11 @@ conventions. En ce qui concerne les tests:
Vous pouvez aussi utiliser l'annotation ``@test`` pour marquer les méthodes
en méthodes de test.

.. versionadded:: 3.4.1
Le support de PHPUnit 6 a été ajouté. Si vous utilisez une version de PHPUnit
inférieure à 5.7.0, vos classes de tests devront soit *extends* les classes
de CakePHP, soit ``PHPUnit_Framework_TestCase``.

Créer Votre Premier Cas de Test
===============================

Expand Down
2 changes: 1 addition & 1 deletion fr/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ Bienvenue
#########

CakePHP 3 est un framework pour le développement web qui fonctionne avec
**PHP 7** (min. PHP |minphpversion|).
**PHP 7.1** (min. PHP |minphpversion|).
Vous pouvez lire :doc:`CakePHP en un coup d'oeil </intro>` pour avoir une
introduction aux fondamentaux de CakePHP 3.

Expand Down
2 changes: 1 addition & 1 deletion fr/installation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ Rester à jour avec les Derniers Changements de CakePHP
Par défaut c'est ce à quoi le **composer.json** de votre application ressemble::

"require": {
"cakephp/cakephp": "3.3.*"
"cakephp/cakephp": "3.4.*"
}

A chaque fois que vous lancez ``php composer.phar update``, vous allez
Expand Down
15 changes: 2 additions & 13 deletions fr/orm/associations.rst
Original file line number Diff line number Diff line change
Expand Up @@ -540,19 +540,8 @@ suit::
}
}

Nous pouvons aussi définir une relation plus spécifique en utilisant les
setters::

// In src/Model/Table/ArticlesTable.php
class ArticlesTable extends Table
{

public function initialize(array $config)
{
$this->belongsToMany('Tags')
->setJoinTable('articles_tags');
}
}
Nous pouvons aussi définir une relation plus spécifique en passant un tableau
de configuration::

// In src/Model/Table/TagsTable.php
class TagsTable extends Table
Expand Down
27 changes: 27 additions & 0 deletions fr/orm/deleting-data.rst
Original file line number Diff line number Diff line change
Expand Up @@ -83,3 +83,30 @@ lignes ont été supprimées.
deleteAll *ne* va *pas* déclencher les événements beforeDelete/afterDelete.
Si vous avez besoin d'eux, chargez d'abord une collection d'enregistrements
et supprimez les.

Suppressions strictes
---------------------

.. php:method:: deleteOrFail($entity, $options = [])

Utiliser cette méthode lancera une :php:exc:`Cake\\ORM\\Exception\\PersistenceFailedException`
si :

* l'entity est _new_ (si elle n'a jamais été persistée)
* l'entity n'a pas de valeur pour sa clé primaire
* les règles de validation ont échoué
* la suppression a été annulée via un _callback_.

Si vous voulez trouver l'entity qui n'a pas pu être sauvegardée, vous pouvez
utiliser la méthode :php:meth:`Cake\\ORM\Exception\\PersistenceFailedException::getEntity()`::

try {
$table->deleteOrFail($entity);
} catch (\Cake\ORM\Exception\PersistenceFailedException $e) {
echo $e->getEntity();
}

Puisque cette méthode utilise la méthode :php:meth:`Cake\\ORM\\Table::delete()`,
tous les événements de ``delete`` seront déclenchés.

.. versionadded:: 3.4.1
43 changes: 39 additions & 4 deletions fr/orm/saving-data.rst
Original file line number Diff line number Diff line change
Expand Up @@ -665,9 +665,9 @@ entities ne soient créées::
// Dans une classe table ou behavior
public function beforeMarshal(Event $event, ArrayObject $data, ArrayObject $options)
{
if (isset($data['username'])) {
$data['username'] = mb_strtolower($data['username']);
}
if (isset($data['username'])) {
$data['username'] = mb_strtolower($data['username']);
}
}

Le paramètre ``$data`` est une instance ``ArrayObject``, donc vous n'avez pas
Expand Down Expand Up @@ -1193,14 +1193,49 @@ correctement les données complexes va permettre à des utilisateurs mal
intentionnés d'être capable de stocker des données qu'ils ne pourraient pas
stocker normalement.

Strict Saving
=============

.. php:method:: saveOrFail($entity, $options = [])

Utiliser cette méthode lancera une :php:exc:`Cake\\ORM\\Exception\\PersistenceFailedException`
si :

* les règles de validation ont échoué
* l'entity contient des erreurs
* la sauvegarde a été annulée par un _callback_.

Utiliser cette méthode peut être utile pour effectuer des opérations complexes
en base de données sans surveillance humaine comme lors de l'utilisation de
script via des _tasks_ Shell.

.. note::

Si vous utilisez cette méthode dans un Controller, assurez-vous de
capturer la ``PersistenceFailedException`` qui pourrait être levée.

Si vous voulez trouver l'entity qui n'a pas pu être sauvegardée, vous pouvez
utiliser la méthode :php:meth:`Cake\\ORM\Exception\\PersistenceFailedException::getEntity()`::

try {
$table->saveOrFail($entity);
} catch (\Cake\ORM\Exception\PersistenceFailedException $e) {
echo $e->getEntity();
}

Puisque cette méthode utilise la méthode :php:meth:`Cake\\ORM\\Table::save()`,
tous les événements de ``save`` seront déclenchés.

.. versionadded:: 3.4.1

Sauvegarder Plusieurs Entities
==============================

.. php:method:: saveMany($entities, $options = [])


En utilisant cette méthode, vous pouvez sauvegarder plusieurs entities de façon
atomique. ``$entites`` peuvent être un tableau d'entities créé avec
atomique. ``$entities`` peuvent être un tableau d'entities créé avec
``newEntities()`` / ``patchEntities()``. ``$options`` peut avoir les mêmes
options que celles acceptées par ``save()``::

Expand Down
2 changes: 2 additions & 0 deletions fr/orm/validation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -429,6 +429,7 @@ Règles sur le Nombre de Valeurs d'une Association
Si vous devez valider qu'une propriété ou une association contient un bon nombre
de valeurs, vous pouvez utiliser la règle ``validCount()``::

// Dans le fichier ArticlesTable.php
// Pas plus de 5 tags sur un article.
$rules->add($rules->validCount('tags', 5, '<=', 'Vous pouvez avoir seulement 5 tags'));

Expand All @@ -438,6 +439,7 @@ paramètre vous permet de définir l'opérateur de comparaison à utiliser. ``==
assurer qu'un nombre d'une propriété est entre certaines valeurs, utilisez deux
règles::

// Dans le fichier ArticlesTable.php
// Entre 3 et 5 tags
$rules->add($rules->validCount('tags', 3, '>=', 'Vous devez avoir au moins 3 tags'));
$rules->add($rules->validCount('tags', 5, '<=', 'Vous devez avoir au moins 5 tags'));
Expand Down
4 changes: 4 additions & 0 deletions fr/plugins.rst
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,10 @@ en utilisant l'habituelle :term:`syntaxe de plugin`::

$contacts = TableRegistry::get('ContactManager.Contacts');

Si vous êtes dans un Controller, vous pouvez aussi utiliser::

$this->loadModel('ContactsMangager.Contacts');

Vues du Plugin
==============

Expand Down
2 changes: 1 addition & 1 deletion fr/views/helpers/paginator.rst
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ Création de liens triés

:param string $key: Le nom de la clé du jeu d'enregistrement qui doit être
triée.
:param string $title: Titre du lien. Si $title est null $key sera
:param string $title: Titre du lien. Si $title est null, $key sera
utilisée pour le titre et sera générée par inflexion.
:param array $options: Options pour le tri des liens.

Expand Down