2 Stimmen

Route zum Weiterleiten zu einem Controller + einer Aktion standardmäßig auf CodeIgniter?

Ich arbeite derzeit an einem Projekt mit Codeigniter.

Ich habe einen Controller namens Cat

class Cat extends CI_Controller {

    function __construct(){
        parent::__construct();
    }

    function index($action){
        // hier der Code
    }

}

und eine Route (in routes.php)

$route['cats/:any'] = 'cat/index/$1';

Und das funktioniert, wenn ich diese URL zum Beispiel verwende: http://www.mywebsite.com/cats/display

Trotzdem, wenn der Benutzer die URL in http://www.mywebsite.com/cats/ ändert, funktioniert es nicht mehr. Codeigniter schreibt: 404 Seite nicht gefunden - Die angeforderte Seite wurde nicht gefunden.

Also ist mein Ziel, ihn standardmäßig zu http://www.mywebsite.com/cats/display umzuleiten, wenn er auf der cats/ Seite ist

Muss ich eine weitere Route machen? Ich habe es versucht

$route['cats'] = 'cat/display';

... aber ohne Erfolg. Vielen Dank für deine Hilfe.

2voto

Cubed Eye Punkte 5501

Es gibt einige Möglichkeiten, dies zu tun:

Sie könnten $action standardmäßig mit 'anzeige' versehen:

function index($action = 'display'){}

ODER

Sie könnten eine Bedingung haben, um sie physisch umzuleiten

function index($action = ''){
   if(empty($action)){redirect('/cats/display');}
   //Anderer Code
}

ODER

Sie müssen Routen angeben, für den Fall, dass nichts vorhanden ist:

$route['cats'] = 'cat/index/display'; //ODER die nächste
$route['cats'] = 'cat/index'; //Dies erfordert eine Funktion ähnlich der zweiten Option oben

Außerdem, wenn Sie nur eine bestimmte Anzahl von Optionen in Ihrer Route haben (z.B. 'anzeige', 'bearbeiten', 'neu'), könnte es sich lohnen, Ihre Route wie folgt einzurichten:

$route['cats/([display|edit|new]+)'] = 'cat/index/$1';

Bearbeiten:

Die letzte Route, die Sie erstellt haben:

$route['cats'] = 'cat/display';

sucht tatsächlich nach Funktion anzeigen() im Controller, anstatt index die 'anzeige'-Option zu übergeben

0voto

umefarooq Punkte 4500

Bester Weg, die _remap-Funktion in Ihrem Controller zu verwenden, es wird Ihre URL auf eine spezifische Methode des Controllers umleiten

class Cat extends CI_Controller {

    function __construct(){
        parent::__construct();
    }

    function _remap($action)
    {
       switch ($action)
       {
            case 'display':
             $this->display();
            break;
            default:
               $this->index();
            break;
        }
    }

    function index($action){
        // Code hier
    }

    function display(){
        echo "ich werde anzeigen";
    }
    }

Überprüfen Sie das Remapping im CI-Benutzerhandbuch

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X