2010-11-30 4 views
2

Bitte entschuldigen Sie, wenn dies eine unglaublich dumme Frage ist, wie ich CodeIgniter neu bin.Mehrere URL-Segmente zu Index-Funktion mit CodeIgniter

Ich habe einen Controller für mein Verifikationssystem namens Verify. Ich möchte in der Lage sein, es so etwas wie site.com/verify/123/abcd zu verwenden, aber ich möchte nur die Indexfunktion verwenden, also müssen beide URL-Segmente zu ihm gehen.

Ich bin sicher, dass dies irgendwie mit URL-Routing durchgeführt werden, aber ich kann nicht herausfinden, wie die beiden Segmente URL übergibt in Index-Funktion des Verify ..

Antwort

0

müssen Sie entweder die Routen bearbeiten oder schreiben Eine Htaccess-Regel, aber ich habe nicht verstanden, warum Sie nur auf die Index-Funktion beschränken wollen.

7

So etwas wie dies in routes.php sollte die Arbeit machen:

$ route [ 'verify/(: any)/(: any)'] = "verify/index/$ 1/$ 2";

+1

Dies ist genau das, was ich gesucht habe - danke, fred – ptrn

1

Ich bin mir ziemlich sicher, dass Sie einfach jede Controller-Methode in CodeIgniter mehrere Argumente übergeben können, ohne Routen oder .htaccess zu ändern, wenn ich das Problem nicht missverstanden habe.

function index($arg_one, $arg_two) 
{ 

} 

$ arg_one die 123 darstellt und $ arg_two der ABCD in Ihrem Beispiel URI darstellt.

+0

Dies würde immer noch erfordern die URL zu sein site.com/verify/index/123/abcd – ErJab

+0

Richtig, aber dies beantwortet die OP-Frage die Art und Weise, wie es gewesen ist formuliert. –

0

Wenn Sie aus irgendeinem Grund keine Routen verwenden möchten, können Sie diese Funktion dem entsprechenden Controller hinzufügen.

public function _remap($method_in, $params = array()) { 
    $method = 'process_'.$method_in; 
    if (method_exists($this, $method)) { 
     return call_user_func_array(array($this, $method), $params); 
    } 
    array_unshift($params, $method_in); 
    $this->index($params); 
} 

Grundsätzlich tut es das gleiche wie das Standardverhalten in CI, außer statt einer 404 auf ‚Überhöhung Methode find‘ Senden, sendet er unfound Methode zum Index aufruft.

Sie müssten Ihre Indexfunktion ändern, um ein Array als erstes Argument zu verwenden. ODER wenn Sie wissen, dass Sie immer nur zwei Argumente wollen, können Sie die letzten 2 Zeilen zu

$this->index($method_in, $params[0]); 

Natürlich beide Lösungen in jemand nicht ändern verwendet ein Argument, das das gleiche wie ein Verfahren, bei dem Controller ist.

Verwandte Themen