Class CGIKit::Component
In: docs/rdoc_ja.rb
Parent: CGIKit::Element

CGIKit::Componentは動的にWebページを生成するクラスです。 CGIKit::Componentオブジェクトはページ表示を行い、ページ固有のロジックを持ちます。 Webページごとにサブクラスを作る必要があります。

CGIKit::Componentには多くのメソッドがあり、次の役割に大きく分かれます。

  • アプリケーション全体で使用するオブジェクトへのアクセス
  • テンプレート、バインディングファイルへのアクセス
  • リクエスト・レスポンスループ
  • サブコンポーネント

サブコンポーネント

コンポーネントはエレメントのようにテンプレートで使うことができます。 ネストして使うコンポーネントをサブコンポーネントと呼びます。 同じようなWebページをいくつも作る場合、コンポーネントを使い回すと楽です。 また、エレメントを作るよりサブコンポーネントを作るほうが簡単です。

リクエスト・レスポンスループでは、 各サブコンポーネントに対して各フェーズが実行されます。 各フェーズの前後で親コンポーネントと同期されるので、 フォームエレメントに入力された値も自動的に親コンポーネントに設定されます。

サブコンポーネントに (Linkなどのように) アクションを設定したい場合は、 perform_parent_actionを使います。

ステートレスコンポーネント

ステートレスコンポーネントとは、状態を保持しないコンポーネントです。 通常のコンポーネントより高速です。 詳しくは StatelessComponent を参照してください。

Methods

Included Modules

KeyValueCoding

Constants

CACHE_TEMPLATE_DIR = "cache"

External Aliases

value_for_key -> []
take_value_for_key -> []=

Attributes

application  [RW]  Applicationオブジェクト。
context  [RW]  Contextオブジェクト。
context_id  [RW]  コンテキストID。
declaration_name  [RW]  バインディング定義名。 サブコンポーネントとしてバインディングファイルで定義されたときの名前。
declaration_store  [RW]  DeclarationStoreオブジェクト。
parent  [RW]  親コンポーネント。
subcomponents  [RW]  サブコンポーネントの配列。

Public Class methods

インスタンスを生成します。 context以降の可変引数は、サブクラスで初期化パラメータが必要な場合に使います。 また、 page() に必要な引数を渡すとargs に代入されます。

Componentはオブジェクトごと保存されるので、 復元後にこのメソッドは呼ばれないことに注意してください。

Public Instance methods

_( key, name = nil, package_name = nil, languages = nil )

Alias for message

テンプレートで使用する各エレメントの append_to_response を実行します。 テンプレートをHTMLに展開して、responseにセットします。

See Also: take_values_from_request, invoke_action

オブジェクトの復元後、初期化するために呼ばれます。 context をインスタンス変数に代入するほか、 テンプレートとバインディングファイルをロードします。 サブコンポーネントにも同様のメッセージを送ります。 このメソッドは最後に did_restore_page を実行します。

コンポーネント名 (名前空間を除いたクラス名) を返します。

リクエスト・レスポンスループのためのコンテキストIDを準備します。 コンテキストIDをすべて削除した後、コンポーネントIDとゼロを追加します。 サブコンポーネントであれば、親コンポーネントのコンテキストIDを保存しておきます。

See Also: end_context

サブコンポーネント時、name の属性値を取得します。 does_resolve が真なら、属性値がシンボルであればメソッドとみなして コンポーネントのメソッドを実行した戻り値を属性値とします。

See Also: set_binding_value, has_binding?, can_get_binding_value?

サブコンポーネント時、name の属性が定義されており、 binding_value が実行できるのなら真を返します。

See Also: can_set_binding_value?, binding_value, has_binding?

サブコンポーネント時、name の属性が定義されており、 set_binding_value が実行できるのなら真を返します。

See Also: can_get_binding_value?, set_binding_value, has_binding?

バインディングファイルのパスを返します。

See Also: template_file

オブジェクトの復元・初期化後 ( awake_from_restoration の後) に呼ばれます。 デフォルトの実装では何もしません。

リクエスト・レスポンスループ後のコンテキストIDの終了処理を行います。 サブコンポーネントであれば、 begin_context で保存しておいた 親コンポーネントのコンテキストIDに戻します。

See Also: begin_context

Responseオブジェクトを生成して返します。 append_to_responseを実行し、Responsseに表示するHTMLを代入します。

サブコンポーネント時、name の属性が定義されていれば真を返します。

See Also: can_get_binding_value?, can_set_binding_value?

セッションが生成されていれば真を返します。

See Also: session

initialize() の代わりの初期化メソッドです。 initialize() の最後で呼ばれます。 このメソッドが呼ばれる時点では、フォームデータはセットされていません。

テンプレートで使用する各エレメントの invoke_action を実行します。

See Also: take_values_from_request, append_to_response

key をキーにした、ローカライズしたメッセージを返します。 package_name のパッケージから 各 languages ロケールの name ファイルを探し、 あればロードしてメッセージを返します。 ファイルが見つからなければ nil を返します。

name を省略すると、 Package::DEFAULT_MESSAGE_FILE ファイルから検索されます。 package_name を省略すると、コンポーネントの属するパッケージ名を指定します。 languages を省略すると、リクエストの優先言語を指定します。

See Also: ResourceManager#message, Package#message, package, Request#language

n_( key, plural_key, n, name = nil, package_name = nil, languages = nil )

Alias for nmessage

n の数に応じて、ローカライズした複数形のメッセージを返します。 key が単数形用のキー、 plural_key が複数形用のキーです。 どちらが使われるかはメッセージカタログの設定によります。 package_name のパッケージから 各 languages ロケールの name ファイルを探し、 あればロードしてメッセージを返します。 ファイルやメッセージが見つからなければ plural_key を返します。

name を省略すると、 Package::DEFAULT_MESSAGE_FILE ファイルから検索されます。 package_name を省略すると、コンポーネントの属するパッケージ名を指定します。 languages を省略すると、リクエストの優先言語を指定します。

See Also: ResourceManager#nmessage, Package#nmessage, package, Request#language

コンポーネントが所属するパッケージ (Package) を返します。

指定した名前のコンポーネントを生成して返します。 残りの引数はそのままコンポーネントのコンストラクタ new() に渡されます。

コンポーネントのパスを返します。

親コンポーネントと同期するとき、 親コンポーネントの name メソッドを実行します。

 :SubPage => {
   :element => Subcomponent,
   :callback => 'display'
 }

 class SubComponent < CGIKit::Component
   attr_accessor :callback

   # リンクのアクションにこのメソッドをバインドする
   def click
     # action属性に設定された親コンポーネントのメソッドを実行する
     perform_parent_action(@callback)
   end
 end

See Also: sync?

sync? が真のとき、バインドされた属性値を親コンポーネントから取得して オブジェクトにセットします。

See Also: sync?, push_values_to_parent

sync? が真のとき、オブジェクトのインスタンス変数を 親コンポーネントのバインドされた属性値にセットします。

See Also: sync?, pull_values_from_parent

Requestオブジェクトを返します。

ResourceManagerオブジェクトを返します。

Responseオブジェクトを返します。

ルートコンポーネントを返します。

ルートコンポーネントなら真を返します。

Sessionオブジェクトを返します。 セッションがまだ作られていなければ生成します。

See Also: has_session?

サブコンポーネント時、name の属性に value をセットします。

See Also: binding_value, has_binding?, can_set_binding_value?

コンポーネントがステートレスであれば真を返します。 デフォルトの実装では偽を返します。

See Also: sync?

サブコンポーネントなら真を返します。

ブロックの実行前後に親コンポーネントと同期します。 次の順に実行されます。

親コンポーネントと同期するなら真を返します。 コンポーネントをステートレスに使いたい場合、同期させないために オーバーライドして偽を返すようにします。 デフォルトでは真を返します。

See Also: pull_values_from_parent, push_values_to_parent, perform_parent_action

テンプレートで使用する各エレメントの take_values_from_request を実行します。 オブジェクトがサブコンポーネントであれば、インスタンス変数を 親コンポーネントにバインドされた変数と同期します。

See Also: invoke_action, append_to_response

テンプレートファイル名を返します。

See Also: declaration_file

テンプレートを展開したHTMLテキストを返します。

See Also: generate_response

各エレメントにバインディングした属性を検証します。 属性の組み合わせが間違っていれば例外を発生します。 検証をしないようにするには、Application#validate_api に falseを設定してください。

バインディングファイルをロードする前に呼ばれます。 ハッシュを返すと、バインディングとしてロードされます。

テンプレートをロードする前に呼ばれます。 文字列を返すと、テンプレートとしてロードされます。

marshal_dump が実行されると呼ばれます。 ここでマーシャルできないオブジェクトを取り除きます。

[Validate]