Routen in Codeigniter - Automatisch
Ich habe ein problem mit Codeigniter Routen. Ich möchte alle registrierten Benutzer auf meiner Website bekommt seine eigene "Verzeichnis", zum Beispiel: www.example.com/username1
, www.example.com/username2
. Dieses "Verzeichnis" sollte die Karte auf dem controller "polica", Methode "geliebäugelt", parameter "Benutzername1".
Wenn ich dies so tun, dann ist jeder controller zugeordnet ist diese route: "polica/geliebäugelt/parameter". Es ist nicht OK:
$route["(:any)"] = "polica/ogled/$1";
Dies funktioniert, aber ich habe immer manuell eingegeben info in routes.php
:
$route["username1"] = "polica/ogled/username1";
Wie kann ich tun, damit diese automatisiert werden?
UPDATE:
Ich habe zum Beispiel controller mit dem Namen ads
. Zum Beispiel, wenn Sie gehen, um www.example.com/ads/
es wird aufgelistet anzeigen. Wenn Sie gehen, um www.example.com/username1
dort aufgeführt sind anzeigen durch den Benutzer username1
. Es gibt auch controller user
, profile
, latest
,...
Meine Aktuelle routes.php
:
$route['oglasi'] = 'oglasi';
$route['(:any)'] = "polica/ogled/$1"
$route['default_controller'] = 'domov';
$route['404_override'] = '';
Ich problem mit diesem code:
$route['oglasi/(:any)'] = 'oglasi/$1';
$route['(:any)'] = "polica/ogled/$1"
$route['default_controller'] = 'domov';
$route['404_override'] = '';
Grüße, Mario
InformationsquelleAutor Puzo | 2011-10-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem mit der route ist, dass durch die Nutzung :alle, die Sie übereinstimmen, tatsächlich...JEDE route, also Sie sind ziemlich viel stecken, es.
Ich denke, Sie haben vielleicht zwei Lösungen:
1)können Sie selektiv re-route werden alle Ihre Websites-controller einzeln, wie:
Alle diese Routen sind VOR ALLE, da Sie Lesen in der Reihenfolge, wie Sie präsentiert werden, und wenn Sie Platz der :alle am Anfang wird es glücklich alle den rest überspringen.
EDIT nach Kommentar:
Was ich meine ist, wenn du gehst, um ein match gegen JEDES segment, das bedeutet, dass man nicht mit jedem controller überhaupt ist (was standardmäßig der erste URI-segment), da der router immer wieder-route, die Sie mit Ihrem Gesetz definiert.
Um zu ermöglichen, CI-ausführen anderen Controller (was auch immer Sie sind, ich habe gerade verwendet einige gemeinsame web-Seiten, aber können buchstäblich alles), die Sie benötigen, um Ihnen zu ermöglichen, durch den Ausschluss von der re-routing. Und dies können Sie erreichen, indem Sie vor Ihr eine Regel, so dass bei CI ging durch Ihren routing-Regeln, die es analysiert zuerst das Sie "geflüchtet", und NUR wenn diese nicht übereinstimmen-alles, was es gefunden auf der URL, es geht auf den :JEDE Regel.
Ich weiß, dass dies ein code Ausführlichkeit dennoch, aber Sie werden sicherlich weniger als 6K, wie Sie sagte.
Da weiß ich nicht, die tatsächliche Struktur Ihrer URLs und Ihrer web-Applikation, es ist die einzige Lösung, die mir in den Sinn kommt. Wenn Sie weitere Informationen, z.B. wie die geformt sind, die regelmäßige urls der app, dann kann ich update meine Antwort
/Ende edit
Dies ist nicht viel, eine praktische Lösung, denn es erfordert eine Menge code, aber wenn du willst ein design wie, dass es die einzige Möglichkeit, die mir in den Sinn kommt.
Bedenken Sie auch, können Sie regexes als die $route-index, aber ich glaube nicht, dass es funktionieren kann hier, wie Ihren Benutzernamen unwahrscheinlich matchable in dieser Weise, aber ich wollte nur darauf hinweisen, die Möglichkeit.
ODER
2) Sie können Ihre design-Muster leicht, und weisen eine andere route, um Benutzernamen, etwas entlang der Linie der
Dies generiert ganz hübsch (und semantische) URLs dennoch, und vermeiden alle Mühe, dem anderen zu entkommen Routen.
routes.php
Datei über 6000 Zeilen - ich mag das nicht :/Ich aktualisiert meine Antwort mit einer Erklärung der ersten Lösung. Und ja, 6000 Routen sind definitiv zu viel.
Ich aktualisierte mein Erster Beitrag - Frage.. brauchen Sie mehr Informationen? Welche Art?
Jetzt habe ich code in
routes.php
in meinem ersten post - Frage. Jetzt kann ich nicht auf controlleroglas
und ich habe es, vor Benutzername Regeln..sorry für die Verspätung. Ich sehe, Sie lösen Ihre Probleme. Nur eine Sache: wie im Handbuch Stand, dann sollten Sie Ihre Routen NACH den Standardeinstellungen, also nach 'default_controller' und '404_ovverride'. Für den rest, ich sehe du hast den Punkt, hoffe es klappt alles jetzt
InformationsquelleAutor Damien Pirsy
Stadtplan:
http://www.web-and-development.com/codeigniter-minimize-url-and-remove-index-php/
die enthält index entfernen.php/entfernen 1. url-segment/entfernen 2st url sigment/routing automatisch.es wird sehr hilfreich für Sie.
InformationsquelleAutor jiabo.zhang
Ich kämpfte mit diesem problem seit kurzem. Ich habe etwas erschaffen, das hat für mich so:
Definieren Sie eine "redirect" - controller mit einem remap Methode. Dies ermöglicht es Ihnen, sammeln die Anfragen an den Controller mit jedem Verfahren variable string in einer Funktion. Also, wenn ein Antrag auf
http://yoursite/jeff/
oderhttp://yoursite/jamie
es nicht schlagen diese Methoden aber stattdessen triffthttp://yoursite/
remap-Funktion. (auch wenn sich die Methoden/Namen gibt es nicht und auch wenn Sie eine index-Funktion, die es ersetzt). In der _Remap Methode definieren Sie eine bedingte Schalter, der arbeitet dann mit dem rest des Codes wieder-die Leitung der Benutzer, wie Sie wollen.Sollten Sie dann definieren Sie diese re-direct-controller als Standard und richten Sie Ihre Routen so:
Dies ist auf den ersten ein bisschen ein problem, weil diese im Grunde die Kraft, alles zu sein umadressiert zu diesem controller, egal was und letztendlich durch dieses
_remap
wechseln.Aber was man machen könnte ist, definieren die Regeln/Routen, die Sie nicht wollen, zu halten, um diesen Zustand über die route-Anweisungen.
ich.e
Fand ich, dass dies produziert eine schöne Anlage, wo ich kann so viele variable Benutzer so definiert sind, wo ich bin in der Lage, leiten Sie Sie einfach basierend auf was Sie stehen durch einen controller.
routes.php
Datei und dann auf den Boden, den ich definieren redirect-Regel? Wirkt sich dies auf die performance der Seite?Lesen Sie Ihren Kommentar, das ist ziemlich viel, was ich versuche zu sagen, dass in meiner Antwort..
Wie kann ich ersetzen Sie # mit " / " im url-routing
InformationsquelleAutor Chamilyan
Andere Möglichkeit wäre ein array deklarieren mit Ihrem intenal-Controller und leiten alles weitere user-controller, wie Sie diese in Ihrem routes.php Datei von codeigniter:
InformationsquelleAutor alex iancu