Parfois vous trouvez que taper tous les paramètres de l’URL pour une route est
trop verbeux, ou bien vous souhaitez tirer avantage des améliorations de la
performance que les routes nommées permettent. Lorsque vous connectez les
routes, vous pouvez spécifier une option
Si votre template de route contient des éléments de route comme
Quand vous construisez vos noms de routes, vous voudrez probablement coller
à certaines conventions pour les noms de route. CakePHP facilite la construction
des noms de route en vous permtttant de définir des préfixes de nom dans chaque
scope:
Vous pouvez aussi utiliser l’option
Les routes connectées dans les scopes nommés auront seulement des noms ajoutés
si la route est aussi nommée. Les routes sans nom ne se verront pas appliquées
_name
, cette option peut être
utilisée pour le routing inversé pour identifier la route que vous souhaitez
utiliser:// Connecter une route avec un nom.
$routes->connect(
'/login',
['controller' => 'Users', 'action' => 'login'],
['_name' => 'login']
);
// Nommage d'une route liée à un verbe spécifique (3.5.0+)
$routes->post(
'/logout',
['controller' => 'Users', 'action' => 'logout'],
'logout'
);
// Génère une URL en utilisant une route nommée.
$url = Router::url(['_name' => 'logout']);
// Génère une URL en utilisant une route nommée,
// avec certains args query string
$url = Router::url(['_name' => 'login', 'username' => 'jimmy']);
:controller
,
vous aurez besoin de fournir ceux-ci comme options de Router::url()
.
Les noms de Route doivent être uniques pour l’ensemble de votre application.
Le même
_name
ne peut être utilisé deux fois, même si les noms
apparaissent dans un scope de routing différent.Router::scope('/api', ['_namePrefix' => 'api:'], function ($routes) {
// le nom de cette route sera `api:ping`
$routes->get('/ping', ['controller' => 'Pings'], 'ping');
});
Router::plugin('Contacts', ['_namePrefix' => 'contacts:'], function ($routes) {
// Connecte les routes.
});
Router::prefix('Admin', ['_namePrefix' => 'admin:'], function ($routes) {
// Connecte les routes.
});
_namePrefix
dans les scopes imbriqués et
elle fonctionne comme vous pouvez vous y attendre:Router::plugin('Contacts', ['_namePrefix' => 'contacts:'], function ($routes) {
$routes->scope('/api', ['_namePrefix' => 'api:'], function ($routes) {
// Le nom de cette route sera `contacts:api:ping`
$routes->get('/ping', ['controller' => 'Pings'], 'ping');
});
});
_namePrefix
.
Aucun commentaire:
Enregistrer un commentaire
Remarque : Seul un membre de ce blog est autorisé à enregistrer un commentaire.