Ich habe eine Website, die in PHP auf Codeigniter geschrieben ist. Das Szenario, mit dem ich umgehen möchte, ist das Folgende:Wie implementiert man am besten den dynamischen URL/Controller-Namen, der datenbankgesteuert ist?
Wenn sich ein Benutzer anmeldet, sollte seine personalisierte Startseite unter www.mysite.com/username angezeigt werden. Andere URLs sind von der Form www.mysite.com/username/pictures & www.mysite.com/username/videos.
Also im Grunde, was ich brauche, ist www.mysite.com/username/method (wo der Benutzername ist datenbankgesteuert) sollte immer den gleichen Controller treffen, wenn der Benutzername in der Datenbank existiert.
Momentan verwende ich den benutzerdefinierten 404-Controller, um dies zu tun. Wenn eine URL den benutzerdefinierten 404-Controller erreicht, überprüfe ich, ob der Name des Controllers mit einem Benutzernamen in der Datenbank übereinstimmt, dann überprüfe den Methodennamen und rufe die erforderliche Methode auf. Wie so:
$this->load->model('school_model');
$this->load->model('event_model');
$this->load->helper('apps_helper');
$controllerName = $this->uri->segment(CONTROLLER);
$controllerMatch = $this->school_model->findSchoolByUid($controllerName);
$this->data['controller'] = $controllerMatch;
if($controllerMatch != false){
$methodName = $this->uri->segment(METHOD);
if($methodName === "something"){
//Do something
}
if($methodName === "something else"){
//Do something else
}
if($methodName === "another thing"){
//Do another thing
}
if($methodName === "last thing"){
//Do last thing
}
...
}
else{
//Load 404 page
$this->output->set_status_header('404');
$data['content404'] = true;
$this->load->view("common/header", $data);
$this->load->view('frontend/index404', $this->data);
$this->load->view("common/footer");
}
Meine Frage ist, ist dies der beste Weg, um zu gehen, was ich brauche? Wie kann ich das verbessern? Ich habe von der modularen Erweiterung HMVC für Code-Anfänger gehört, die eine gute Wette sein kann? Ich suche nur einen Rat.
Sie könnten eine '$ route ['(: any)'] = 'controller/method/$ 1'' am unteren Rand Ihrer Routen-Konfiguration einrichten. Dann wird hier eine Route gesendet, die nicht mit einer anderen Routeneinstellung übereinstimmt. 'public function userDashboard ($ username)' ist, wie Ihre Methode aussehen sollte. Dann müssen Sie nur überprüfen, ob der Benutzername gültig ist. – mic