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
3 changes: 1 addition & 2 deletions en/development/configuration.rst
Original file line number Diff line number Diff line change
Expand Up @@ -681,7 +681,6 @@ use the values that are defined in the **app.php**. You can use
environment variables in a local development. See the Readme instructions of the
library for more information.


Disabling Generic Tables
========================

Expand All @@ -691,7 +690,7 @@ make debugging more difficult in some scenarios.

You can check if any query was emitted from a generic table class via DebugKit
via the SQL panel in DebugKit. If you're still having trouble diagnosing an
issue that could be caused by auto-tables, you can throw an exeception when
issue that could be caused by auto-tables, you can throw an exception when
CakePHP implicitly uses a generic ``Cake\ORM\Table`` instead of your concrete
class like so::

Expand Down
65 changes: 65 additions & 0 deletions fr/controllers/request-response.rst
Original file line number Diff line number Diff line change
Expand Up @@ -609,6 +609,71 @@ jusqu'à ce que la réponse soit émise par ``Cake\Http\Server``.
Vous pouvez maintenant utiliser la méthode :php:meth:`Cake\\Http\\Response::withLocation()`
pour définir ou obtenir directement le header "redirect location".

Définir le Corps de la réponse
------------------------------

.. php:method:: withStringBody($string)

Pour définir une chaîne comme corps de réponse, écrivez ceci::

// Définit une chaîne dans le corps
$response = $response->withStringBody('My Body');

// Si vous souhaitez une réponse JSON
$response = $response->withType('application/json')
->withStringBody(json_encode(['Foo' => 'bar']));

.. versionadded:: 3.4.3

``withStringBody()`` was added in 3.4.3

.. php:method:: withBody($body)

Pour définir le corps de la réponse, utilisez la méthode ``withBody()`` qui est
fournie par le :php:class:`Zend\\Diactoros\\MessageTrait`::

$response = $response->withBody($stream);

// Avant 3.4.0, pour définir le corps de la réponse
$this->response->body('My Body');

Assurez-vous que ``$stream`` est un objet de type :php:class:`Psr\\Http\\Message\\StreamInterface`.
Ci-dessous, la manière de créer un nouveau stream.

Vous pouvez également "*streamer*" les réponses depuis des fichiers en
utilisant des streams :php:class:`Zend\\Diactoros\\Stream`::

// Pour "streamer" depuis un fichier
use Zend\Diactoros\Stream;

$stream = new Stream('/path/to/file', 'rb');
$response = $response->withBody($stream);

Vous pouvez aussi streamer des réponses depuis un callback en utilisant un
``CallbackStream``. C'est utile si vous avez des ressources comme des images,
des fichiers CSV ou des fichiers PDF à streamer au client::

// Streamer depuis un callback
use Cake\Http\CallbackStream;

// Création d'une image
$img = imagecreate(100, 100);
// ...

$stream = new CallbackStream(function () use ($img) {
imagepng($img);
});
$response = $response->withBody($stream);

// Avant 3.4.0, vous pouvez utiliser la méthode ci-dessous pour créer des
// réponses sous forme de stream
$file = fopen('/some/file.png', 'r');
$this->response->body(function () use ($file) {
rewind($file);
fpassthru($file);
fclose($file);
});

Définir le Character Set
------------------------

Expand Down
2 changes: 1 addition & 1 deletion fr/core-libraries/email.rst
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ sont utilisées:
- ``'transport'``: Nom du Transport. Regardez
:php:meth:`~Cake\\Mailer\\Email::setConfigTransport()`.
- ``'log'``: Niveau de Log pour connecter les headers de l'email headers et le
message. ``true`` va utiliser LOG_DEBUG. Regardez aussi ``CakeLog::write()``.
message. ``true`` va utiliser LOG_DEBUG. Regardez aussi :ref:`logging-levels`.
- ``'helpers'``: Tableau de helpers utilisés dans le template email. ``Email::setHelpers()``.

Toutes ces configurations sont optionnelles, excepté ``'from'``.
Expand Down
120 changes: 77 additions & 43 deletions fr/development/configuration.rst
Original file line number Diff line number Diff line change
Expand Up @@ -638,19 +638,20 @@ courantes:
- Configurer les inflections personnalisées.
- Charger les fichiers de configuration.

It might be tempting to place formatting functions there in order to use them in
your controllers. As you'll see in the :doc:`/controllers` and :doc:`/views`
sections there are better ways you add custom logic to your application.
Il pourrait être tentant de placer des fonctions de formatage ici pour les
utiliser dans vos controllers. Comme vous le verrez dans les documentations sur
les :doc:`/controllers` et les :doc:`/views`, il y a de meilleurs moyens pour
vous d'ajouter de la logique personnalisée dans votre application.

.. _application-bootstrap:

Application::bootstrap()
------------------------

In addition to the **config/bootstrap.php** file which should be used to
configure low-level concerns of your application, you can also use the
``Application::bootstrap()`` hook method to load/initialize plugins, and attach
global event listeners::
En plus du fichier **config/bootstrap.php** qui doit être utilisé pour faire de
la configuration "bas niveau" de votre application, vous pouvez également
utiliser la méthode "hook" ``Application::bootstrap()`` pour charger /
initialiser des plugins et attacher des écouteurs d'événements globaux::

// in src/Application.php
namespace App;
Expand All @@ -662,54 +663,87 @@ global event listeners::
{
public function bootstrap()
{
// Call the parent to `require_once` config/bootstrap.php
// Appeler la méthode parente permet de faire le `require_once`
// pour charger le fichier config/bootstrap.php
parent::bootstrap();

Plugin::load('MyPlugin', ['bootstrap' => true, 'routes' => true]);
}
}

Loading plugins/events in ``Application::bootstrap()`` makes
:ref:`integration-testing` easier as events and routes will be re-processed on
each test method.
Charger les plugins et les événements dans ``Application::bootstrap()`` rend
les :ref:`integration-testing` plus faciles car les événements et les routes
seront ainsi à nouveau traités pour chaque méthode de test.

Environment Variables
=====================
Variables d'environnement
=========================

Some of the modern cloud providers, like Heroku, let you define environment
variables. By defining environment variables, you can configure your CakePHP
app as an 12factor app. Following the
`12factor app instructions <http://12factor.net/>`_ is a good way to create a
stateless app, and to ease the deployment of your app.
This means for example, that if you need to change your database, you'll just
need to modify a DATABASE_URL variable on your host configuration without the
need to change it in your source code.
Certains fournisseurs d'architectures dans le cloud comme Heroku, vous
permettent de définir des variables d'environnement. En définissant des
variables d'environnement, vous pouvez configurer vos applications comme des
applications 12factor. Suivre les `instructions pour les applications 12factor <http://12factor.net/>`_
vous permet de créer des applications "stateless" et donc de faciliter le
déploiement de votre application.
Cela signifie ainsi que si vous avez besoin par exemple de changer votre base
de données, vous avez juste besoin de changer la variable DATABASE_URL dans la
configuration sur votre fournisseur sans rien avoir à changer dans votre code.

As you can see in your **app.php**, the following variables are concerned:
Comme vous pouvez le voir dans le fichier **app.php**, les variables suivantes
sont concernés :

- ``DEBUG`` (``0`` or ``1``)
- ``APP_ENCODING`` (ie UTF-8)
- ``APP_DEFAULT_LOCALE`` (ie ``en_US``)
- ``APP_ENCODING`` (ex: UTF-8)
- ``APP_DEFAULT_LOCALE`` (ex: ``en_US``)
- ``SECURITY_SALT``
- ``CACHE_DEFAULT_URL`` (ie ``File:///?prefix=myapp_&serialize=true&timeout=3600&path=../tmp/cache/``)
- ``CACHE_CAKECORE_URL`` (ie ``File:///?prefix=myapp_cake_core_&serialize=true&timeout=3600&path=../tmp/cache/persistent/``)
- ``CACHE_CAKEMODEL_URL`` (ie ``File:///?prefix=myapp_cake_model_&serialize=true&timeout=3600&path=../tmp/cache/models/``)
- ``EMAIL_TRANSPORT_DEFAULT_URL`` (ie ``smtp://user:password@hostname:port?tls=null&client=null&timeout=30``)
- ``DATABASE_URL`` (ie ``mysql://user:pass@db/my_app``)
- ``DATABASE_TEST_URL`` (ie ``mysql://user:pass@db/test_my_app``)
- ``LOG_DEBUG_URL`` (ie ``file:///?levels[]=notice&levels[]=info&levels[]=debug&file=debug&path=../logs/``)
- ``LOG_ERROR_URL`` (ie ``file:///?levels[]=warning&levels[]=error&levels[]=critical&levels[]=alert&levels[]=emergency&file=error&path=../logs/``)

As you can see in the examples, we define some options configuration as
:term:`DSN` strings. This is the case for databases, logs, email transport and
cache configurations.

If the environment variables are not defined in your environment, CakePHP will
use the values that are defined in the **app.php**. You can use
`php-dotenv library <https://github.com/josegonzalez/php-dotenv>`_ to use
environment variables in a local development. See the Readme instructions of the
library for more information.
- ``CACHE_DEFAULT_URL`` (ex: ``File:///?prefix=myapp_&serialize=true&timeout=3600&path=../tmp/cache/``)
- ``CACHE_CAKECORE_URL`` (ex: ``File:///?prefix=myapp_cake_core_&serialize=true&timeout=3600&path=../tmp/cache/persistent/``)
- ``CACHE_CAKEMODEL_URL`` (ex: ``File:///?prefix=myapp_cake_model_&serialize=true&timeout=3600&path=../tmp/cache/models/``)
- ``EMAIL_TRANSPORT_DEFAULT_URL`` (ex: ``smtp://user:password@hostname:port?tls=null&client=null&timeout=30``)
- ``DATABASE_URL`` (ex: ``mysql://user:pass@db/my_app``)
- ``DATABASE_TEST_URL`` (ex: ``mysql://user:pass@db/test_my_app``)
- ``LOG_DEBUG_URL`` (ex: ``file:///?levels[]=notice&levels[]=info&levels[]=debug&file=debug&path=../logs/``)
- ``LOG_ERROR_URL`` (ex: ``file:///?levels[]=warning&levels[]=error&levels[]=critical&levels[]=alert&levels[]=emergency&file=error&path=../logs/``)

Comme vous pouvez le voir dans ces exemples, nous définissons certaines options
de configuration à l'aide de chaînes :term:`DSN`. C'est le cas pour les bases
de données, les logs, le transport d'emails et les configurations du cache.

Si certaines variables d'environnement ne sont pas définies dans votre environnement,
CakePHP utilisera les valeurs définies dans **app.php**. Vous pouvez utiliser
la `librairie php-dotenv <https://github.com/josegonzalez/php-dotenv>`_ pour
utiliser les variables d'environnement dans vos développements en local.
Reportez-vous aux instructions dans le README pour plus d'informations.

Désactiver les tables génériques
================================

Bien qu'utiliser les classes génériques de Table (aussi appeler les "auto-tables")
soit pratique lorsque vous développez rapidement de nouvelles applications, les
tables génériques rendent le debug plus difficile dans certains cas.

Vous pouvez vérifier si une requête a été générée à partir d'une table générique
via le DebugKit, dans le panel SQL. Si vous avez encore des difficultés à
diagnostiquer un problème qui pourrait être causé par les auto-tables, vous
pouvez lancer une exception quand CakePHP utilise implicitement une ``Cake\ORM\Table``
générique plutôt que la vraie classe du Model::

// Dans votre fichier bootstrap.php
use Cake\Event\EventManager;
use Cake\Network\Exception\InternalErrorException;

$isCakeBakeShellRunning = (PHP_SAPI === 'cli' && isset($argv[1]) && $argv[1] === 'bake');
if (!$isCakeBakeShellRunning) {
EventManager::instance()->on('Model.initialize', function($event) {
$subject = $event->getSubject();
if (get_class($subject === 'Cake\ORM\Table') {
$msg = sprintf(
'Missing table class or incorrect alias when registering table class for database table %s.',
$subject->getTable());
throw new InternalErrorException($msg);
}
});
}

.. meta::
:title lang=fr: Configuration
:keywords lang=fr: configuration finie,legacy database,configuration base de données,value pairs,connection par défaut,configuration optionnelle,exemple base de données,classe php,configuration base de données,base de données par default,étapes de configuration,index base de données,détails de configuration,classe base de données,hôte localhost,inflections,valeur clé,connection base de données,facile,basic web
:keywords lang=fr: configuration finie,legacy database,configuration base de données,value pairs,connection par défaut,configuration optionnelle,exemple base de données,classe php,configuration base de données,base de données par default,étapes de configuration,index base de données,détails de configuration,classe base de données,hôte localhost,inflections,valeur clé,connection base de données,facile,basic web,auto tables,auto-tables,table générique,class
18 changes: 18 additions & 0 deletions fr/installation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,24 @@ la prochaine version majeure sort. De plus, composer ne met pas en cache les
branches de développement, donc cela ralentit les installs/updates consécutifs
de composer.

Installation en utilisant Oven
------------------------------

Une autre manière rapide d'installer CakePHP est d'utiliser `Oven <https://github.com/CakeDC/oven>`_.
Il s'agit d'un simple script PHP qui vérifie si vous respectez les
recommandations systèmes, installe le squelette d'application CakePHP et met
en place l'environnement de développement.

Après l'installation, votre application CakePHP est prête !

.. note::

IMPORTANT : Ceci n'est pas un script de déploiement. Il s'agit d'une aide à
l'installation de CakePHP. Il permet de mettre en place un environnement de
développement rapidement. Les environnements de production doivent
également prendre en compte d'autres facteurs comme les permissions de
fichiers, les configurations de vhost, etc.

Permissions
===========

Expand Down
15 changes: 12 additions & 3 deletions fr/orm/table-objects.rst
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ Par convention, les objets Table vont utiliser une table avec la notation en
minuscule et avec des underscores pour le nom de la classe. Dans l'exemple du
dessus, la table ``articles`` va être utilisée. Si notre classe table était
nommée ``BlogPosts``, votre table serait nommée ``blog_posts``. Vous pouvez
spécifier la table en utilisant la méthode ``table()``::
spécifier la table en utilisant la méthode ``setTable()``::

namespace App\Model\Table;

Expand All @@ -50,6 +50,9 @@ spécifier la table en utilisant la méthode ``table()``::

public function initialize(array $config)
{
$this->setTable('my_table');

// Avant 3.4.0
$this->table('my_table');
}

Expand All @@ -58,7 +61,7 @@ spécifier la table en utilisant la méthode ``table()``::
Aucune convention d'inflection ne sera appliquée quand on spécifie une table.
Par convention, l'ORM s'attend aussi à ce que chaque table ait une clé primaire
avec le nom de ``id``. Si vous avez besoin de modifier ceci, vous pouvez
utiliser la méthode ``primaryKey()``::
utiliser la méthode ``setPrimaryKey()``::

namespace App\Model\Table;

Expand All @@ -68,6 +71,9 @@ utiliser la méthode ``primaryKey()``::
{
public function initialize(array $config)
{
$this->setPrimaryKey('my_id');

// Avant 3.4.0
$this->primaryKey('my_id');
}
}
Expand All @@ -81,12 +87,15 @@ conventions de nommage. Par exemple, si votre classe de table est appelée
``ArticlesTable`` l'entity sera ``Article``. Si la classe table est
``PurchaseOrdersTable`` l'entity sera ``PurchaseOrder``. Cependant si vous
souhaitez utiliser une entity qui ne suit pas les conventions, vous pouvez
utiliser la méthode ``entityClass()`` pour changer les choses::
utiliser la méthode ``setEntityClass()`` pour changer les choses::

class PurchaseOrdersTable extends Table
{
public function initialize(array $config)
{
$this->setEntityClass('App\Model\Entity\PO');

// Avant 3.4.0
$this->entityClass('App\Model\Entity\PO');
}
}
Expand Down
8 changes: 8 additions & 0 deletions fr/views/json-and-xml-views.rst
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,14 @@ personnaliser le masque utilisé pour générer le JSON. Regardez la
documentation `json_encode <http://php.net/json_encode>`_ sur les valeurs
valides de cette option.

Par exemple, pour serializer le rendu des erreurs de validation des entités de
CakePHP de manière cohérente, vous pouvez le faire de la manière suivante::

// Dans l'action de votre controller, quand une sauvegarde échoue
$this->set('errors', $articles->errors());
$this->set('_jsonOptions', JSON_FORCE_OBJECT);
$this->set('_serialize', ['errors']);

Réponse JSONP
-------------

Expand Down