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 を参照してください。
CACHE_TEMPLATE_DIR | = | "cache" |
value_for_key | -> | [] |
take_value_for_key | -> | []= |
application | [RW] | Applicationオブジェクト。 |
context | [RW] | Contextオブジェクト。 |
context_id | [RW] | コンテキストID。 |
declaration_name | [RW] | バインディング定義名。 サブコンポーネントとしてバインディングファイルで定義されたときの名前。 |
declaration_store | [RW] | DeclarationStoreオブジェクト。 |
parent | [RW] | 親コンポーネント。 |
subcomponents | [RW] | サブコンポーネントの配列。 |
インスタンスを生成します。 context以降の可変引数は、サブクラスで初期化パラメータが必要な場合に使います。 また、 page() に必要な引数を渡すとargs に代入されます。
Componentはオブジェクトごと保存されるので、 復元後にこのメソッドは呼ばれないことに注意してください。
テンプレートで使用する各エレメントの 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?
リクエスト・レスポンスループ後のコンテキストIDの終了処理を行います。 サブコンポーネントであれば、 begin_context で保存しておいた 親コンポーネントのコンテキストIDに戻します。
See Also: begin_context
サブコンポーネント時、name の属性が定義されていれば真を返します。
See Also: can_get_binding_value?, can_set_binding_value?
テンプレートで使用する各エレメントの 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 が複数形用のキーです。 どちらが使われるかはメッセージカタログの設定によります。 package_name のパッケージから 各 languages ロケールの name ファイルを探し、 あればロードしてメッセージを返します。 ファイルやメッセージが見つからなければ plural_key を返します。
name を省略すると、 Package::DEFAULT_MESSAGE_FILE ファイルから検索されます。 package_name を省略すると、コンポーネントの属するパッケージ名を指定します。 languages を省略すると、リクエストの優先言語を指定します。
See Also: ResourceManager#nmessage, Package#nmessage, package, Request#language
親コンポーネントと同期するとき、 親コンポーネントの 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
サブコンポーネント時、name の属性に value をセットします。
See Also: binding_value, has_binding?, can_set_binding_value?
ブロックの実行前後に親コンポーネントと同期します。 次の順に実行されます。
親コンポーネントと同期するなら真を返します。 コンポーネントをステートレスに使いたい場合、同期させないために オーバーライドして偽を返すようにします。 デフォルトでは真を返します。
See Also: pull_values_from_parent, push_values_to_parent, perform_parent_action
テンプレートで使用する各エレメントの take_values_from_request を実行します。 オブジェクトがサブコンポーネントであれば、インスタンス変数を 親コンポーネントにバインドされた変数と同期します。
See Also: invoke_action, append_to_response