私はcodeigniterにPHPで書かれたウェブサイトを持っています。私が対処しようとしているシナリオは、次のとおりです。データベース駆動型の動的URL /コントローラ名を最適に実装するにはどうすればよいですか?
ユーザーがサインアップすると、パーソナライズドホームページはwww.mysite.com/usernameに表示されます。その他のURLの形式は、www.mysite.com/username/pictures & www.mysite.com/username/videosです。
www.mysite.com/username/method(usernameはデータベース駆動型です)は、ユーザー名がデータベースに存在する場合は、常に同じコントローラを使用する必要があります。
現在、私はカスタム404コントローラを使ってこれを行っています。 URLがカスタム404コントローラに達すると、コントローラー名がデータベースのユーザー名と一致するかどうかを確認した後、メソッド名をチェックして必要なメソッドを呼び出します。ように:
$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");
}
私のクエリは、これは私が必要とするものについて行くための最善の方法ですか?これをどのように改善できますか? HMVCモジュラーエクステンションについて聞いたことがあります。ただいくつかのアドバイスを探しています。
ルート設定の一番下に '$ route ['(:any)'] = 'コントローラ/メソッド/ $ 1'を設定できます。次に、別のルート設定と一致しないルートがここで送信されます。 'public function userDashboard($ username)'は、あなたのメソッドがどのように見えるかを示します。次に、ユーザー名が有効であることを確認するだけです。 – mic