codeigniterのページにルーティングするための最良の方法は何だろうと思っていましたか?たとえば、ユーザーがインデックスページにルーティングしたいとしますが、そのページだけを対象とするメソッドをコントローラーで作成する必要がありますか、それともより良い方法はありますか?
3 に答える
個別のメソッドやコントローラーを作成する必要はありません。これが私がそれをする方法です:
class Pages extends CI_Controller {
function _remap($method)
{
is_file(APPPATH.'views/pages/'.$method.'.php') OR show_404();
$this->load->view("pages/$method");
}
}
したがって、URLhttp://example.com/pages/about
はビューファイルをロードしますapplication/views/pages/about.php
。ファイルが存在しない場合は、404が表示されます。
これを行うために特別なルーティングは必要ありませんが、http://example.com/about
代わりにURLを使用したい場合は、次のようにすることができます。
// Route the "about" page
$route['about'] = "pages/$1";
// Route ALL requests to the static page handler
$route['(:any)'] = "pages/$1";
ルーティングはapplication/config/routes.php
ファイルを使用して実行できます。そこでインデックスページにリダイレクトするカスタムルートを定義できます。すべてのページにメソッドを作成する必要はまったくありません。
より詳細な説明はここにあります:http://codeigniter.com/user_guide/general/routing.html
編集:あなたが意図したことを本当に理解していませんでしたが、これが私が使用する解決策です:
class Static_pages extends CI_Controller {
public function show_page($page = 'index')
{
if ( ! file_exists('application/views/static_pages/'.$page.'.php'))
show_404();
$this->load->view('templates/header');
$this->load->view('static_pages/'.$page);
$this->load->view('templates/footer');
}
}
application/controllers
静的ページにロードするために使用する1つのメソッドを使用して、静的ページ用に1つのコントローラーを作成します。
次に、この行を次のように追加しapplication/config/routes.php
ます。
$route['(:any)'] = 'static_pages/show_page/$1';
//you can also change the default_controller to show this static page controller
$route['default_controller'] = 'static_pages/show_page';
にある構成ファイル内/application/config/routes.php