CodeIgniter ユーザガイド 日本語版 Version 1.7.3


スカッフォールディング(Scaffolding)

スカッフォールディングは、CodeIgniter1.6.0から非推奨となっています。

CodeIgniter のスカッフォールディング(Scaffolding)機能を使うと、開発中にすばやく便利に、データベースに情報を追加・編集・削除できるようになります。

Very Important: スカッフォールディングは、開発用途で利用することのみを想定しています。アクセスした人は誰でも潜在的に情報を編集できてしまうので、この機能には、「シークレットワード」以外には、非常にわずかなセキュリティしか備わっていません。スカッフォールディングを使った場合、使用後は必ず、すみやかにこの機能を無効にするようにしてください。ずっと有効なままにしておいてはいけません。使用前には、シークレットワードを設定してください。

なぜスカッフォールディング機能を使うのでしょうか?

よくあるシナリオ: 開発中に新しいデータベーステーブルを作成し、そのテーブルに何らかのデータを素早く追加したいというような場合があります。スカッフォールディングを使わないとすると、コマンドラインを使ってデータを追加するか、phpMyAdminのようなデータベース管理ツールを使ってデータを追加するかのどちらかになります。CodeIgniterのスカッフォールディング機能を使えば、ブラウザの画面を使って、素早くデータを追加できます。また、データを使っているときにいつでも、簡単にデータを削除することもできます。

シークレットワードを設定する

スカッフォールディング機能を有効にする前に、シークレットワードを設定するようにしてください。シークレットワードは、URLの中で使った時に、スカッフォールディングの画面を立ち上げるものになります。ですので、誰もが簡単に予測できないようなものにしてください。

シークレットワードをセットするには、application/config/routes.php ファイルを開いて下のような項目を探してください:

$route['scaffolding_trigger'] = '';

見つけたら、固有の文字を追加します。

Note: スカッフォールディングに使用するシークレットワードの先頭の文字にアンダースコア "_" を使ってはいけません

スカッフォールディングを有効にする

Note: このページの情報は、コントローラ がどのように動作するかをすでに知っていて、動作するものを作成済みであると仮定しています。また、データベースに自動接続するよう設定しているのが前提になっています。もしこれらの前提に当てはまらなければ、ここに書いてある情報は、おそらくあまり役に立ちません。ですので、まず関連するセクションを通読するのをお勧めします。最後に、クラスのコンストラクタが何かについて理解していることを前提としています。もし理解できていない場合は、コントローラの解説ページの最後の部分を読んでください。

スカッフォールディングを有効にするには、次のようにコンストラクタで初期化してください:

<?php
class Blog extends Controller {

       function Blog()
       {
            parent::Controller();

            $this->load->scaffolding('table_name');
       }
}
?>

ここでの table_name は、操作したいテーブル名 (テーブル名で、データベース名ではありません) になります。

スカッフォールディングを初期化したら、次のような例のURLでアクセスすることができます:

example.com/index.php/class/secret_word/

たとえば、次の例では、Blog という名前のコントローラを使い、abracadabra をシークレットワードとして送信することで、スカッフォールディングにアクセスできます:

example.com/index.php/blog/abracadabra/

スカッフォールディングの画面には、スカッフォールディングそのものの説明が書いてあります。画面で、レコードを追加・編集・削除することができます。

最後に:

スカッフォールディング機能は、操作するテーブルに主キーが設定されているときだけ動作します。主キーは様々なデータベース処理で必要になる情報です。