Advertisement
  1. Code
  2. PHP

Programmation avec Yii2 : Routage et création d’URL

Scroll to top
Read Time: 8 min
This post is part of a series called How to Program With Yii2.
Programming With Yii2: Using Amazon S3
Programming With Yii2: Helpers

() translation by (you can also view the original English article)

Yii2 Routing and URL CreationYii2 Routing and URL CreationYii2 Routing and URL Creation

Si vous demandez, « Ce qui est Yii ? » check-out Introduction au cadre Yii, qui passe en revue les avantages de Yii et comprend un aperçu des Yii 2.0.

Introduction au routage

Dans cette série de programmation avec Yii2, je suis guider les lecteurs dans l’utilisation du cadre Yii2 pour PHP.

Dans le tutoriel d’aujourd'hui, je vais passer en revue de routage et de la création d’URL dans Yii. Lorsqu’une demande de navigateur arrive au fichier index.php de votre application Yii, il doit être analysé pour déterminer quel contrôleur et la méthode à appeler. Qui est le routage. Le processus inverse de la relation avec les parties de votre application est la création d’URL, qui est le mieux faite par programmation.

YII offre beaucoup de souplesse dans la gestion des liens de routage et de production. Suivez-moi que je passe en revue les bases.

Avant commencer, n’oubliez pas, j’essaie de participer à la discussion ci-dessous. Si vous avez une question ou une suggestion de sujet, veuillez poster un commentaire ci-dessous ou contactez moi sur Twitter @reifman.

Remarque : Si vous avez remarqué l’écart entre les épisodes de série programmation Yii, c’est parce que je devais avoir une chirurgie du cerveau l’an dernier. Je vous remercie pour votre patience et votre soutien, c’est agréable d’écrire à nouveau régulièrement, et je suis impatient de poursuivre la couverture de Yii2.

Arrière-plan

Gestionnaire d’URL de YII est le composant de l’application qui est utilisé pour l’analyse des demandes entrantes, parseRequest(), mais aussi générer de nouvelles URL par programme, createUrl().

Les demandes sont analysées en parcours, qui prennent cette forme :

1
ControllerID/ActionID

Essentiellement, URL Manager charge Yii quelle méthode contrôleur et d’action pour créer et appeler.

Tout au long de votre application, vous devez générer des URL qui peuvent être analysées correctement lorsque demandées par les utilisateurs. Utiliser createUrl() pour cela fait en sorte que les requêtes entrantes peuvent être mappés avec succès.

Voici un exemple :

1
use yii\helpers\Url;
2
// Url::to() calls UrlManager::createUrl() to create a URL

3
$url = Url::to(['message/view', 'id' => 100]);

Sans un cadre MVC, n’importe quel fichier PHP dans votre application peut répondre directement aux demandes, ce qui signifie que vous devez gérer la sécurité dans l’ensemble de tous les fichiers. Avec Gestionnaire de MVC et URL, sécurité de base est fournie au niveau central, et l’accès à votre application est assez contrôlé. C’est l’une des principales raisons ne pas à se soucier de vanille PHP — rocher de cadres !

Nous allons plonger un peu plus de détails sur le sujet d’aujourd'hui.

Routage

Demandes d’utilisateurs viennent à travers le navigateur sur le web pour votre serveur sous la forme d’URL. Jetons un œil à un à partir d’un utilisateur demande une page de connexion sur mon application de démarrage série, planificateur de réunions :

1
https://meetingplanner.io/index.php/site/login

Mon application utilise jolie URL dans Yii (décrit ci-dessous) ; avis moins variables de requête. Sans cela, l’URL peut ressembler à ceci :

1
https://meetingplanner.io/index.php?r=site/login

En tout cas, parseRequest traite l’URL et crée et appelle SiteController.php avec actionLogin().

Avec des jolies URL, le gestionnaire d’URL passera en revue les règles enregistrées. Dans le planificateur de réunions, ils sont dans le fichier de configuration commun :

1
'components' => [
2
    'urlManager' => [
3
      'class' => 'yii\web\UrlManager',
4
      ...
5
      'rules' => [
6
          '<controller:\w+>/<id:\d+>' => '<controller>/view',
7
          '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
8
          '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
9
          'defaultRoute' => '/site/index',
10
      ],
11
  ],

Si aucune règle ne correspond ou s’il y a une erreur pour atteindre un contrôleur et action, une erreur 404, yii\web\NotFoundHttpException exception, sera levée.

Cependant, dessus il y a un ensemble de defaultRoute pour aller à la page d’accueil à SiteController actionIndex, qui couvrira des demandes d’URL inégalées.

Regardons de plus près à une des règles ci-dessus :

1
'<controller:\w+>/<id:\d+>' => '<controller>/view',

Il est dit que si vous recevez une demande pour un contrôleur suivi d’un mot (\w+) suivi d’une barre oblique et d’un certain nombre (\d+), envoyer cette demande au contrôleur fichier avec le nom correspondant et appelez actionView($id) avec les actionView(130) de MeetingController.php de numéro, c'est-à-dire réunion/vue/130 appels.

Définir vos règles est important et peut s’ajoute ou non à la performance globale de votre site ou les temps de réponse. Vous pouvez en savoir plus sur le paramétrage avancé de Yii des itinéraires pour optimiser les performances. Règles d’écriture peut obtenir plus détaillées, dont je n’entrerai pas dans aujourd'hui.

Jolie URL

Comme je le disais plus haut, Pretty URLs commutateur de routage basé sur le paramètre de Yii à un routage basé sur le chemin d’accès. Par exemple, cette URL demande Regarde un ID 130 y rencontrer.

1
https://meetingplanner.io/meeting/130

Ou cette URL prie Regarde un à un endroit appelé El Diablo café :

1
https://meetingplanner.io/place/el-diablo-coffee-co

Vous pouvez lire comment programme avec Yii2 : comportement Sluggable (Envato Tuts +) pour en savoir plus sur l’implémentation de limaces pour gérer ces types d’URL nommé.

Pour activer la jolie URL, vous devez activer enablePrettyUrl dans urlManager :

1
'urlManager' => [
2
        'class' => 'yii\web\UrlManager',
3
        // Disable index.php

4
        'showScriptName' => false,
5
        // Disable r= routes

6
        'enablePrettyUrl' => true,
7
        'rules' => array(
8
                '<controller:\w+>/<id:\d+>' => '<controller>/view',
9
                '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
10
                '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
11
        ),
12
        ],

Remarque : En ce moment, vous pouvez également désactiver index.php dans l’URL avec showScriptName ; Cependant, je suis encore aux prises avec la création des URL sans le index.php dans mon projet d’application actuel. Cette traque est sur ma liste des tâches.

Vous devez également créer un fichier .htaccess et activer le mod_rewrite d’Apache :

1
RewriteEngine on
2
# If a directory or a file exists, use it directly

3
RewriteCond %{REQUEST_FILENAME} !-f
4
RewriteCond %{REQUEST_FILENAME} !-d
5
# Otherwise forward it to index.php

6
RewriteRule . index.php

Fourre-tout Mode

Programming Yii Maintenance Mode ViewProgramming Yii Maintenance Mode ViewProgramming Yii Maintenance Mode View

Une autre fonctionnalité intéressante de routage Yii est la possibilité de placer facilement votre application en mode maintenance. Juste définir un paramètre fourre-tout dans la configuration de l’application, action et affichage :

1
<?php
2
return [
3
    'vendorPath' => dirname(dirname(__DIR__)) . '/vendor',
4
    'language' => 'en', // english

5
    'catchAll' => ['site/offline'],
6
    'components' => [
7
        'urlManager' => [
8
    

J’ai aussi ajouté une actionOffline en SiteController.php et une vue de offline.php.

Création d’URL

YII fournit un Assistant règles de la méthode yii\helpers\Url::to() pour créer des liens au sein de votre application qui correspondra bien à l’analyse. Génération de liens par programme à l’infrastructure de Yii aidera à maintenir la gérabilité et la portabilité du code de votre application.

Voici quelques exemples de création d’URL de documentation de Yii :

1
use yii\helpers\Url;
2
3
// creates a URL to a route: /index.php?r=post%2Findex

4
echo Url::to(['post/index']);
5
6
// creates a URL to a route with parameters: /index.php?r=post%2Fview&id=100

7
echo Url::to(['post/view', 'id' => 100]);
8
9
// creates an anchored URL: /index.php?r=post%2Fview&id=100#content

10
echo Url::to(['post/view', 'id' => 100, '#' => 'content']);
11
12
// creates an absolute URL: https://www.example.com/index.php?r=post%2Findex

13
echo Url::to(['post/index'], true);
14
15
// creates an absolute URL using the https scheme: https://www.example.com/index.php?r=post%2Findex

16
echo Url::to(['post/index'], 'https');

Bien sûr, si le format d’URL joli est activé, les URL créés sera différents.

Voici un exemple de me générer un lien dans le contrôle de grille de liste de réunion pour Meeting Planner :

1
return '<div><a href="'.Url::to(['meeting/view', 'id' => $model->id]).'">'.$model->subject.'</a><br /><span class="index-participant">'.$model->getMeetingParticipants($model->id).'</span></div>';

J’ai également inclure beaucoup de liens dans les courriels sortants pour Meeting Planner, qui exigent un certain nombre d’arguments identiques pour la validation de l’accès des utilisateurs. J’ai créé un programme d’assistance pour la construction de ces commandes qui utilise Url:to() :

1
class MiscHelpers  {
2
3
  public static function buildCommand($meeting_id,$cmd=0,$obj_id=0,$actor_id=0,$auth_key='') {
4
    return Url::to(['meeting/command',
5
        'id'=>$meeting_id,
6
        'cmd'=>$cmd,
7
        'actor_id'=>$actor_id,
8
        'k'=>$auth_key,
9
        'obj_id'=>$obj_id
10
        ],true);
11
   }

Écriture de code PHP brut pour créer manuellement des liens comme ceux-ci serait fastidieux, erreur sujette et moins portable. URL :: to() permet d’économiser beaucoup de temps aussi bien dans le codage et le dépannage.

Remarque : je vais écrire au sujet Yii Helpers dans un prochain épisode. En utilisant une fonction généralement accessible au sein de mon aide me permet d’économiser beaucoup d’efforts et réduit le codage global.

En terminant

Mise en route d’un MVC peut prêter à confusion et itinéraires et adresses URL peut jouer un rôle dans le présent. J’aurais peut-être dû écrire sur les gammes plus tôt dans la série. En tout cas, j’espère que vous avez appris de nouvelles choses sur Yii et sa conception d’une application souple avec les itinéraires et les URL.

Surveillez les prochains tutoriels dans notre série de programmation avec Yii2 alors que nous continuons à plonger dans les différents aspects du cadre. Par exemple, faites le moi savoir si vous souhaitez en savoir plus sur le routage avancé. Je me réjouis de demandes de fonctionnalité et de thème. Vous pouvez les poster dans les commentaires ci-dessous ou écrivez-moi à mon site de préanalyse Consulting.

Si vous souhaitez explorer une application plus avancée de Yii2 maintenant, Découvrez notre série de démarrage et le planificateur de réunions. L’application est maintenant en version alpha, et vous pouvez l’utiliser pour planifier des réunions avec des amis. Vous pouvez également télécharger le code ; Il est open source.

Si vous souhaitez savoir quand le prochain tutoriel de Yii2 arrive, me suivre @reifman sur Twitter ou voir ma page de l’instructeur. Ma page instructeur comprendra tous les articles de cette série dès qu’elles sont publiées.

Liens connexes

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.