スキャフォールディング(足場作成)

注意:スキャフォールディング(足場作成)は、v3.4.0からの機能です。

はじめに

BREAD: browse(走査)、read(読み取り)、edit(編集)、add(追加)、delete(削除)は、Webアプリケーションの中でも、標準的で基本的な操作です。

そのため、この BREAD 操作を実装するプロセス (スキャフォールディングとも呼ばれます) を自動化するために、Enviでは、いくつかのコード生成ツールを提供しています。

scaffoldを実行させれば、「足場」という名の通り、最低限のBREADを行うWebアプリケーションが自動的に作成されます。

ジェネレータの実行

下記のコマンドを実行する事で、scaffoldジェネレーターが実行され、最低限のBREADが実装された、Webアプリケーションが作成されます。

envi init-scaffold <app_key> <module_name> <column_name>:<data_type>:<form_name>,([not_null]),([unique]),([default]:<デフォルトパラメータ>),(<バリデーション>) .....

  • app_keyパラメーターには、足場を作成するアプリキーを指定します
  • module_nameパラメーターには、足場を作成するモジュールを指定します。
  • column_nameパラメーターには、DBにおけるカラム名を指定します。
  • data_typeパラメーターには、DBにおけるデータタイプを指定します。DBのデータタイプ以上に細かな制約が、バリデーションとして定義されます。
    • date
      • 日付
    • time
      • 時間
    • date_time
      • 日付と時間
    • datetime
      • date_timeと同じ
    • integer
    • int
      • integerと同じ
    • naturalnumber
      • 自然数
    • bigint
      • Bigint型
    • tinyint
      • tinyint型
    • smallint
      • smallint型
    • mediumint
      • mediumint型
    • string
      • 文字列型。maxlenもしくは、maxwidthの制限が内場合は、255文字制限
    • varchar
      • stringと同じ
    • email
      • 文字列型。maxlenもしくは、maxwidthの制限が内場合は、255文字制限
      • <input type="email">になり、validation::mailsimpleがかかる
    • password
      • 文字列型。maxlenもしくは、maxwidthの制限が内場合は、255文字制限
      • <input type="password">になり、validation::romeがかかる
    • flag
      • tinyint型
    • radio
      • 文字列型。maxlenもしくは、maxwidthの制限が内場合は、10文字制限
      • whitelist制限が必須
    • select
      • 文字列型。maxlenもしくは、maxwidthの制限が内場合は、10文字制限
      • whitelist制限が必須
    • textarea
      • テキスト型。フォームは<textarea></textarea>となる
    • text
      • textareaと同じ
    • zip_code
      • 郵便番号。データ型は文字列
  • form_nameパラメーターには、入力フォームに記載する、フォームの名前を記述します。
  • not_nullは、入力が必須の場合に指定して下さい。
  • default:<デフォルトパラメータ>は、空が入力されたときのデフォルトの値を指定して下さい。指定しない場合は、NULLとなります。
  • <バリデーション>は、バリデータで利用できるすべてのバリデータが使用できます。
    • <validator名>:<制約>形式で指定します。
      • (例)minlen:10
    • 複数指定する場合は、,(カンマ)で区切って下さい
      • (例)minlen:10,maxlen:255,rome
注意:すでにあるモジュールを指定した場合は、ファイルを上書きしますので注意して下さい。

複数のカラムを定義するときは、スペースで区切って定義します。

実際のコマンドの例は、下記のようになります。

envi init-scaffold main bbs user_name:string:名前,notnull,maxlen:50 email:email:メールアドレス,maxlen:100 subject:string:件名,notnull,default:Re,maxlen:50 body:text:本文,notnull,maxlen:5000

作成された足場

コマンドを実行すると、下記のようなアクションが作成されます。

  • actions.class.php
    • 基底クラス
  • newAction.class.php
    • 新規作成入力フォーム
  • createAction.class.php
    • 新規作成処理 & 新規作成入力確認
  • destroyAction.class.php
    • データ削除
  • indexAction.class.php
    • 一覧表示
  • showAction.class.php
    • 入力データ詳細表示
  • editAction.class.php
    • 入力データ編集フォーム
  • updateAction.class.php
    • 入力データ編集処理 & 入力データ編集処理 入力確認

また、モデル保存ディレクトリには、と同じ名前の、モデルが作成され、制限に従ったテーブルを作るための、マイグレーションファイルを作成します。

注意:マイグレーションファイルは事故を防ぐため、そのままでは動作しません。 動作させるには、マイグレーションファイルを開き、必要箇所のコメントを外す必要があります。