2011-07-12 3 views
1

Je construis un système de routage de base afin de me débarrasser de l'index.php? Page_id = 2 choses et j'utilise une URL bien formée comme: nouvelles/régionale/sports/baseball/junior-league/2010 qui, par exemple, m'amènerait aux nouvelles de baseball de la ligue junior en 2010Réflexions sur le routage de sous-catégorie

La structure de base est comme ceci: il y a un routeur qui évalue l'URL et accède à un contrôleur approprié et appelle une méthode avec une certaine arguments (optionnels). Le contrôleur appelle ensuite la classe de modèle appropriée et la lie à une vue qui est ensuite sortie.

Prenant l'exemple précédent, je voudrais accéder: nouvelles/régionales/sport/baseball/junior ligue/2010 que je voudrais appeler la BaseballController :: vue (junior-ligue, 2010) méthode. Je souhaite que l'approche reste modulaire, donc sans définir de routes spécifiques (site-). Je voudrais juste avoir un motif dans mes URL afin que je puisse appeler la méthode du bon contrôleur avec les bons arguments.

Comment puis-je formater mes URL et spécifier certaines règles d'évaluation, afin que ce comportement soit obtenu? (Est-ce possible?)

Solutions J'ai pensé:

  • Exemple url: Nouvelles/régionale/sport/baseball/view/junior championnat/2010
    1. sur les barres obliques exploser (résultant dans un tableau)
    2. look pour un tableau [0] contrôleur avec un tableau de méthode [1]
    3. Si cette méthode existe, appelez avec les arguments
    4. Si elle n'a pas, cherchez un tableau [1] contrôleur avec un tableau [2] méthode
    5. etc
      L'avantage est que cette approche est très modulaire. La seule chose est que le temps d'accès à une page augmente en fonction du nombre de sous-catégories (ou est-ce négligeable?). Peut-être que le processus peut être accéléré en stockant un plan du site (mais c'est juste ce que je ne veux pas)
  • Formater une URL comme ceci: [chemin du contrôleur]/[contrôleur]/[action] - [ argument1] - [argument2] Exemple: news/régional/sports/baseball/view-junior_league-2010 utilisant cet algorithme
    1. strip au "-" (qui génère un tableau) [news/regional/sports/baseball/view, junior_league, 2010]
    2. prendre le premier élément et exploser sur les barres obliques [[nouvelles, régionales, sports, baseball, affichage], junior_league, 2010]
    3. rechercher une méthode nommée tableau [0] [last] (view) dans le tableau des contrôleurs [0] [last-1] (baseball) qui se trouve dans le répertoire controllers/news/regional/sports. Utilisez le reste du tableau en tant qu'arguments.
      Inconvénient est que vous utilisez également le trait de soulignement et l'URL n'est plus très agréable. Et peut-être que cela prend peu de temps?

Si vous avez lu tout cela, merci! Peut-être que vous pouvez partager vos pensées? Gr Bastiaan

+0

J'ai mis votre question en raison de vos efforts dans la documentation. En raison du manque d'expérience, je ne peux que pointer vers un composant de routage sophistiqué https://github.com/symfony/Routing qui a fonctionné pour moi dans le passé. Puisque vous demandez des "pensées" - ce n'est peut-être pas le bon forum pour cela;) – madflow

Répondre

1

J'ai beaucoup utilisé récemment ToroPHP, qui utilise un tableau PHP pour définir un modèle d'expression régulière à faire correspondre, et un gestionnaire pour appeler s'il y a une correspondance.

Jetez un oeil à ToroPHP et peut-être extrapoler une partie de sa solution à vos besoins.

+0

Merci! Je vais regarder dans ça! – Bastiaan

Questions connexes