0

codeigniterのページにルーティングするための最良の方法は何だろうと思っていましたか?たとえば、ユーザーがインデックスページにルーティングしたいとしますが、そのページだけを対象とするメソッドをコントローラーで作成する必要がありますか、それともより良い方法はありますか?

4

3 に答える 3

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";
于 2012-07-24T18:11:30.130 に答える
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';
于 2012-07-24T17:48:58.983 に答える
0

にある構成ファイル内/application/config/routes.php

于 2012-07-24T17:47:26.150 に答える