Routage et génération d'URL
Lorsqu'une application YII commence à traiter une requête, la première chose qu'elle fait est de la faire consiste à convertir l'URL demandée en une route. Le rôle du routage est d'instancier ultérieurement les contrôleurs et les opérations correspondants afin de traiter les requêtes. L'ensemble du processus de traitement est appelé routage. (Apprentissage recommandé : Framework YII )
Le processus inverse de la route est appelé génération d'URL, qui fait référence à la génération d'une URL avec une route et des informations de paramètres données. Lorsque l'URL générée est utilisée pour effectuer une demande, le processus de traitement de routage peut l'analyser à nouveau et restaurer les informations de routage et de paramètres d'origine. Le gestionnaire d'URL est principalement responsable du routage et de la génération d'URL, qui est enregistrée en tant que composant d'application. Le gestionnaire d'URL fournit la méthode parseRequest() pour analyser la demande et analyser les informations de routage et de paramètres. La méthode createUrl() est utilisée pour générer une URL à partir des informations de route et de paramètres données. En configurant le gestionnaire d'URL dans la configuration de l'application, vous pouvez permettre à votre application de reconnaître n'importe quel format d'URL sans modifier le code du programme existant. Par exemple, vous pouvez utiliser le code suivant pour générer une URL.use yii\helpers\Url; // Url::to() calls UrlManager::createUrl() to create a URL $url = Url::to(['post/view', 'id' => 100]);Selon la configuration du gestionnaire d'URL, l'URL générée par le code ci-dessus ressemblera à ce qui suit. Si cette URL est demandée ultérieurement, elle sera analysée dans les informations d'itinéraire et de paramètres d'origine ci-dessus.
/index.php?r=post/view&id=100 /index.php/post/100 /posts/100
Format d'URL
Le gestionnaire d'URL prend en charge deux formats d'URL : le format d'URL par défaut et le joli format d'URL. Le format d'URL par défaut utilise un paramètre de requête r pour transmettre la route, et d'autres paramètres sont placés dans l'URL de la manière normale. Par exemple, l'URL /index.php?r=post/view&id=100 a une route de publication/vue et un identifiant de paramètre de 100. Le format d'URL par défaut ne nécessite aucune configuration du gestionnaire d'URL. Le magnifique format d'URL utilise un chemin supplémentaire après le nom du script d'entrée pour afficher l'itinéraire et les paramètres associés. Par exemple, le chemin supplémentaire de l'URL /index.php/post/100 est /post/100, la route affichée est post/view et l'identifiant du paramètre est 100. Si vous souhaitez utiliser ce format d'URL, vous devez concevoir un ensemble de règles d'URL basé sur les besoins réels. Vous pouvez basculer entre ces deux formats d'URL en modifiant la valeur de l'attribut activatePrettyUrl dans le gestionnaire d'URL.Routage
Le travail de routage peut être divisé en deux étapes :
1. Analyser un itinéraire et les paramètres associés. ; 2. L'opération du contrôleur qui génère une réponse basée sur l'itinéraire est utilisée pour traiter la demande. Lors de l'utilisation du format d'URL par défaut, l'analyse de l'itinéraire est très simple, il suffit d'obtenir la valeur du paramètre r ; Lors de l'utilisation du joli format d'URL, le gestionnaire d'URL détectera l'URL ; règles définies pour trouver l’itinéraire qui correspond à la demande. Si aucune règle correspondante n'est trouvée, une exception yiiwebNotFoundHttpException sera levée. Une fois la route analysée à partir de la requête, la prochaine chose à faire est de créer l'action du contrôleur associée à cette route. Les routes sont découpées en plusieurs parties, par exemple, site/index sera coupé en site et index.Chaque partie est un identifiant, elle peut pointer vers un module, un contrôleur ou une opération. À partir de la première partie de l'itinéraire, les étapes suivantes doivent être effectuées pour créer le module (le cas échéant), le contrôleur et l'action :
1 Définissez le corps de l'application sur le module actuel. 2. Vérifiez si le yiibaseModule::controllerMap du module actuel contient l'ID actuel. Si tel est le cas, un objet contrôleur sera créé en fonction de la configuration du tableau, puis passera à l'étape cinq pour exécuter les fragments suivants de l'itinéraire. 3. Vérifiez si l'ID pointe vers un module dans la liste des modules dans l'attribut yiibaseModule::modules du module actuel. Si tel est le cas, un objet module sera créé en fonction de la configuration dans la table des modules, puis le module nouvellement créé sera utilisé comme environnement pour revenir à l'étape deux afin d'analyser l'itinéraire suivant. 4. Traitez cet ID comme un ID de contrôleur et créez un objet contrôleur. Utilisez l'étape suivante pour analyser les fragments restants de l'itinéraire. 5. Le contrôleur recherchera l'ID actuel dans son yiibaseController::actions(). S'il est trouvé, il créera un objet d'action basé sur la configuration dans la table de mappage ; sinon, le contrôleur tentera de créer une action en ligne correspondant à l'ID et définie par une méthode d'action. Si des erreurs se produisent dans les étapes ci-dessus, l'application lèvera une exception yiiwebNotFoundHttpException, ce qui signifie que le traitement du routage a échoué.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!