CodeIgniterで管理ページを作成する

CodeIgniterで管理ページを作成するにはどうすればよいのか、「CodeIgniter徹底入門」を参考にしながら作ってみます。

一つ気付いたことがあるのですが、「CodeIgniter徹底入門」には管理ページの作成方法は載っていません。なので、解説を参考に考えながら作成していきます。管理ページの作成方法が載っていたら良かったですね。

ログイン認証にはsimpleloginライブラリを使おうかと思っているのですが、まだどうするか考え中なので、枠組みだけ作っておくことにします。

管理ページ用の設定の追加

CakePHPの管理ページ機能が便利なので、真似をしながら作成していきます。(CakePHPを使えばいいじゃん、とか突っ込まないように。やっていることが見えやすいのがCIのいいところだと思います。)

管理者用のMVCはディレクトリを分けたいので、config.phpにそれ用の設定を追加します。

/system/application/config/config.php
$config['admin_path'] = 'admin';

ここで管理ページ用のディレクトリ名を指定することにします。

MY_Controllerクラスの作成

管理者用のコントローラでログインのチェック処理を共有したいので、コアのControllerクラスを継承して、MY_Controllerクラスを作成します。

/system/application/libraries/MY_Controller.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class MY_Controller extends Controller {
    function MY_Controller()
    {
        parent::Controller();
    }
}
?>

ここにはコントローラで共通のメソッドや処理を書いていきます。

ログインのチェック処理の追加

作成したMY_Controllerクラスにログインのチェック処理を追加します。

/system/application/libraries/MY_Controller.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class MY_Controller extends Controller {
    function MY_Controller()
    {
        parent::Controller();

        $this->output->set_header('Content-Type: text/html; charset=UTF-8');

//        $this->load->library(array('simplelogin', 'session'));
//        $this->load->helper(array('url'));
//
//        $admin_path = $this->config->slash_item('admin_path');
//        $admin_segment = $this->uri->rsegment(1, false);
//
//        if ($admin_segment && $admin_segment == $admin_path
//            && $this->session->userdata('logged_in') !== true) {
//            redirect('/' . $admin_path . '/account/login/');
//            exit;
//        }
    }
}

ログインのチェック処理は、simpleloginライブラリの使用を前提に枠組みだけ作成しました。URIの第一セグメントにadmin_pathを含む場合で、ログインしていない場合はログインページにリダイレクトするようにしています。

全てのコントローラに共通するHTTPヘッダの設定も追加しておきました。

Accountコントローラの作成

管理者アカウントの管理をするAccountコントローラを作成します。

/system/application/controllers/admin/account.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class Account extends MY_Controller {

    function Account()
    {
        parent::MY_Controller();
    }

    function index()
    {
//       $admin_path = $this->config->slash_item('admin_path');
//       $this->load->view($admin_path . '/index');
    }

    function login()
    {
//       $admin_path = $this->config->slash_item('admin_path');
//       $this->load->view($admin_path . '/login');
    }

    function logout()
    {
//       $admin_path = $this->config->slash_item('admin_path');
//       $this->load->view($admin_path . '/logout');
    }

}
?>

ここに、実際のログイン認証関連の処理を追加していきます。

こんな方法で良いのかはわかりませんが、とりあえずは管理ページの作り方がわかったので、後は他の部分が完成した後に詰めていきたいと思います。

ちなみに、個人的にビューではヘルパー関数は使わない派です。生成されるXHTMLが見えないのは不安ですし、Dreamweaverなどから扱う場合にも不便だからです。ただ、ビューから他のビューを呼び出したり、コントローラを呼び出すためのURIを生成するためにadmin_pathの設定が必要になるので、それを取得するためのヘルパー関数などは作成しておくとよいのかもしれませんね。

コメント (0)

この記事へのコメントはまだありません。

コメントフォーム

トラックバック (1)

[…] CodeIgniterで管理ページを作成する […]

この記事のトラックバックURI
http://dxd8.com/archives/142/trackback/
この記事のURI
http://dxd8.com/archives/142/