2016-05-23 6 views
5

Ich verwende Codeigniter 3.x, mit routes.php Ich möchte dynamische Routen erstellen, zum Beispiel habe ich einen Klassennamen Class1.Verwenden Sie Bindestrich (-) anstelle von Schrägstrich (/) oder Unterstrich (_) in Routen

Ich möchte Ausgabe url

mysite.com/Class1-Student-Search

Aber mit Bindestrich (-) funktioniert nicht

Wenn ich einen Schrägstrich setzen (/), es funktioniert,

$route['(:any)/Student-Search'] = "search"; 

es kehrt

mysite.com/Class1/Student-Search

und mit Unterstrich (_) auch funktionieren.

$route['(:any)_Student-Search'] = "search"; 

kehrt

mysite.com/Class1_Student-Search

Aber ich will Bindestrich (-), wenn ich es, wird es auf 404 Fehler gehen Seite, habe ich diese vier Lösungen verwendet, aber nicht für mich arbeiten.

$route['(:any)-Student-Search'] = "search"; 
$route['([a-zA-Z]+)-Student-Search'] = "search"; 
$route['([a-zA-Z-0-9]+)-Student-Search'] = "search"; 
$route['(.*)-Student-Search'] = "search"; 

Und wenn ich hart codieren den Wert in Route

$route['Class1-Student-Search'] = "search"; 

Dann ist auch daran zu arbeiten

+0

Haben Sie '$ route ['translate_uri_dashes'];' auf 'TRUE' gesetzt ?? – Saty

+0

ja ich setze es @Saty –

+0

Es ist eine reguläre Ausdrücke. Versuchen Sie, ihnen zu entgehen: '\\ - Student \\ - Search' –

Antwort

2

Sie versuchen, eine dynamische Routen zu schaffen, die nicht in codeigniter ist, wenn Sie das folgende sehen Flussdiagramm von Codeigniter Sie verstehen, was ich meine.

enter image description here

auch können Sie diese Grafik in codeigniter offiziellen siehe website

, wenn Sie versuchen, eine URL zu umleiten oder rufen Sie es Arbeit wie diese

enter image description here

Jede Anfrage zuerst geht Route dort für Sie kann es nicht dynamisch machen

+2

Codeigniter offizielle Website ist jetzt http://www.codeigniter.com und Sie können jetzt beide Dokumente finden Sie hier http://www.codeigniter.com/docs Ellislab befasst sich nicht mehr mit CI. Aber aus irgendeinem Grund haben sie immer noch Links. – user4419336

-1

Hier ist meine Lösung, es funktioniert für mich, mach das so.

dann in Ihrem Link-Button, hoffentlich in Ihrer Ansicht, href den Link wie folgt.

href="/<?php echo $row->classname; ?>-Student-Search" 

der Punkt ist, dass nicht nur müssen Sie Ihre Routen machen, Suffix es auch in Ihrem href Link auch auf die gleiche Weise.

+0

Was ist das (: any) in deiner Antwort bedeutet es, dass dein Anruf zuerst an den Router geht, dann prüft der Router, ob er Callas laufen möchte. dieser Typ möchte die erste Klasse anrufen, dann die Route, die nicht möglich ist in Codeigniter –

+0

(: any) bedeutet die tatsächliche ID, die er passiert, wird die Route für die ID-Nummer überprüfen und dann in die Klasse gehen. Er kann die ID an die Route übergeben, dann die Daten abfragen und die relevanten Details laden. – Prakash

+0

lesen Sie die Frage vollständig er will die Anfrage an eine Klasse senden, wo er eine Funktion definiert haben und dann den Router treffen, was nicht möglich ist. –

Verwandte Themen