diff --git a/en/plugins.rst b/en/plugins.rst index 3a9f1a102f..0f2ee7cdda 100644 --- a/en/plugins.rst +++ b/en/plugins.rst @@ -288,7 +288,7 @@ Plugin Routes Plugins can provide routes files containing their routes. Each plugin can contain a **config/routes.php** file. This routes file can be loaded when the plugin is added, or in the application's routes file. To create the -ContactManager plugin routes. Put the following into +ContactManager plugin routes, put the following into **plugins/ContactManager/config/routes.php**:: 'Redis', + 'duration' => '+1 hours', + 'prefix' => 'cake_redis_', + 'host' => '127.0.0.1', + 'port' => 6379, + 'fallback' => 'default', + ]); + +Si le serveur Redis tombait en erreur de manière inattendue, l'écriture dans le +cache avec la configuration ``redis`` se repliera sur la configuration ``default``. +Si l'écriture dans la configuration ``default`` échouait *elle aussi*, le moteur +se replierait à nouveau sur un autre 'fallback', ici le ``NullEngine``, et +empêcherait l'application de lancer une exception. + +.. versionadded:: 3.5.0 + Les fallbacks pour moteur de cache ont été ajoutés. + Suppression de Configuration de Cache ------------------------------------- diff --git a/fr/development/routing.rst b/fr/development/routing.rst index 9cf29454d0..b1fafb6e01 100644 --- a/fr/development/routing.rst +++ b/fr/development/routing.rst @@ -726,7 +726,11 @@ un scope de prefix:: Le code ci-dessus devrait créer une route similaire à ``/admin/debug_kit/:controller``. Elle devrait avoir les éléments de route -``prefix`` et ``plugin`` définis. +``prefix`` et ``plugin`` définis. Référez-vous à la section :ref:`plugin-routes` +pour avoir plus d'informations sur comment construire des routes de plugin. + +Créer des Liens vers des Routes de Plugins +------------------------------------------ Vous pouvez créer des liens qui pointent vers un plugin, en ajoutant la clé ``plugin`` au tableau de l'URL:: @@ -744,7 +748,7 @@ souhaitez créer un lien qui n'a pas de plugin, vous pouvez faire ceci:: ['plugin' => null, 'controller' => 'Users', 'action' => 'profile'] ); -En définissant ``plugin => null``, vous dites au Router que vous souhaitez +En définissant ``'plugin' => null``, vous dites au Router que vous souhaitez créer un lien qui n'appartient pas à un plugin. Routing Favorisant le SEO diff --git a/fr/plugins.rst b/fr/plugins.rst index 58f25c8472..2690baae6d 100755 --- a/fr/plugins.rst +++ b/fr/plugins.rst @@ -292,6 +292,57 @@ re-générer votre autoloader une fois que vous avez créé votre plugin: php composer.phar dumpautoload +.. _plugin-routes: + +Routes de Plugins +================= + +Les plugins peuvent contenir des fichiers de routes contenant leurs propres routes. +Chaque plugin contient un fichier **config/routes.php**. Ce fichier de routes +peut être chargé quand le plugin est ajouté ou dans le fichier de routes de l'application. +Pour créer les routes du plugin ContractManager, ajoutez le code suivant dans +**plugins/ContactManager/config/routes.php**:: + + '/contact-manager'], + function ($routes) { + $routes->get('/contacts', ['controller' => 'Contacts']); + $routes->get('/contacts/:id', ['controller' => 'Contacts', 'action' => 'view']); + $routes->put('/contacts/:id', ['controller' => 'Contacts', 'action' => 'update']); + } + ); + +Le code ci-dessus connectera les routes par défaut de votre plugin. Vous pouvez +personnaliser ce fichier avec plus de routes plus tard. + +Avant de pouvoir accéder à vos controllers, assuez-vous que le plugin est bien +chargé et que les routes du plugin le sont également. Dans votre fichier +**config/bootstrap.php**, ajoutez la ligne suivante:: + + Plugin::load('ContactManager', ['routes' => true]); + +Vous pouvez également charger les routes du plugin dans la liste des routes de votre +application. Le faire de cette manière vous permet d'avoir plus de contrôle sur la manière +dont les routes de plugin sont chargées et vous permet d'englober les routes du plugin +dans des préfixes et des 'scopes' spécifiques:: + + Router::scope('/', function ($routes) { + // Connect other routes. + $routes->scope('/backend', function ($routes) { + $routes->loadPlugin('ContactManager'); + }); + }); + +Le code ci-dessus vous permettrait d'avoir des URLs de la forme ``/backend/contact_manager/contacts``. + +.. versionadded:: 3.5.0 + ``RouteBuilder::loadPlugin()`` a été ajoutée dans 3.5.0 + Controllers du Plugin ===================== @@ -332,35 +383,6 @@ Un ``AppController`` dédié à votre plugin peut contenir la logique commune à tous les controllers de votre plugin, et n'est pas obligatoire si vous ne souhaitez pas en utiliser. -Avant d'accéder à vos controllers, vous devrez vous assurez que le plugin est -chargé et que les routes du plugin sont chargées. Dans votre -**config/bootstrap.php**, ajoutez ce qui suit:: - - Plugin::load('ContactManager', ['routes' => true]); - -Si vous utilisez ``Plugin::loadAll()``, assurez-vous que les routes sont -chargées:: - - Plugin::loadAll(['routes' => true]); - -Ensuite créez les routes du plugin ContactManager. Mettez ce qui suit dans -**plugins/ContactManager/config/routes.php**:: - - '/contact-manager'], - function ($routes) { - $routes->fallbacks(DashedRoute::class); - } - ); - -Ce qui est au-dessus connecte les routes par défaut pour votre plugin. Vous -pouvez personnaliser ce fichier avec des routes plus spécifiques plus tard. - Si vous souhaitez accéder à ce qu'on a fait avant, visitez ``/contact-manager/contacts``. Vous aurez une erreur "Missing Model" parce que nous n'avons pas de model Contact encore défini.