CodeIgniterのデフォルトコントローラとデフォルトビューの変更

CodeIgniterをインストールしWebページにアクセスした際に呼び出されるのは

  • コントローラ:Welcome
  • ビュー:welcome_message

となっています。

今回はCodeIgniterのデフォルト挙動の理解を深めつつ、この挙動を変更するための設定を行っていきます。

スポンサーリンク

デフォルトコントローラの挙動

CodeIgniterではURIパスの指定がなかった場合に呼び出されるコントローラは「Welcome」コントローラとなっています。

これは

Best Website Builder Online | Yoursite
Start Your Site & Connect With The World. Create your website and go online now! All plans include custom mailboxes and web hosting.

にアクセスした際に呼び出されるコントローラです。

このWelcomeコントローラは application/controllers/Welcome.phpに記載されています。

CodeIgniterではapplication/controllersディレクトリ内に、「クラス名.php」という名前でコントローラを作成していきます。

デフォルトコントローラを変更する

デフォルトのコントローラを変更するためには「application/config/route.php」ファイルを変更する必要があります。

上記ファイルの52行目(CodeIgniter3.1.10)に$route[‘default_controller’] という記述があります。その値を変更することによってデフォルトコントローラの変更が可能です。

$route['default_controller'] = 'welcome';
↓
$route['default_controller'] = 'hello'; // デフォルトでhello.phpを呼び出す

上記設定ではWelcomeクラスの代わりにhelloクラスを呼び出すように変更しています。

CodeIgniterでコントローラ名に使用できない名前

CodeIgniterでは以下の名前は予約語として扱われており、コントローラ名に使用できません。

  • CI_Controller
  • Default
  • Index

ちょうどデフォルトコントローラに良さそうな名前が予約語として扱われていますので注意しましょう。

コントローラを作成する

デフォルトコントローラの挙動を変更したら、設定値に合わせたコントローラを作成していきます。

「application/controller」内にHello.phpを作成し、CI_Controllerを継承したHelloクラスを作成します。

「Hello.php」は、大文字で始める必要がありますので注意して下さい。

2行目の「defined(‘BASEPATH’)」は、フロントコントローラが正常に読み込まれていない場合に処理を中断する記述です。CodeIgniterのコントローラには必ず記載しましょう。

また、クラス名の「Hello」も大文字で始める必要があります

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Hello extends CI_Controller {

        public function index()
        {
        }
}

CodeIgniterのデフォルトビュー

CodeIgniterのデフォルトでは、

Best Website Builder Online | Yoursite
Start Your Site & Connect With The World. Create your website and go online now! All plans include custom mailboxes and web hosting.

にアクセスした際に「application/views」ディレクトリのwelcome_message.phpが表示されるようになっています。

その内容と言えば以下のようなもの。

CodeIgniterのビューやコントローラについて簡単に解説されています。

このビューを変更するには、先ほど作成したIndexクラスを編集します。

URIに何もない場合、CodeIgniterはデフォルトコントローラ内のindex()メソッドを参照します。そのため、先ほど作成したHello.phpのindex()メソッドを編集する必要があります。

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Index extends CI_Controller {

        public function index()
        {
            $this->load->view('hello'); // view内のhello.phpを表示する

        }
}

上記設定により、application/views/hello.phpが呼ばれるようになります。

CodeIgniterのデフォルトコントローラやデフォルトビューを変更するための設定は以上です。

コメント

タイトルとURLをコピーしました