Ringコンポーネント
Ringコンポーネントは、リクエストでアップロードされたファイルを、ビヘイビアが保存できる形に整えます。確認画面のあるフォームでは、アップロードされたファイルをセッションに保持します。
コンポーネントを追加する
コントローラーにコンポーネントを追加します。
php
public $components = ['Session', 'Filebinder.Ring'];このコンポーネントは、Labelヘルパーもコントローラーに追加します。
アップロードされたファイルを保存する
リクエストデータを保存する前に、bindUp()を呼びます。
php
$this->Ring->bindUp();bindUp()は、モデルのファイルのフィールドごとに次の処理をします。
- アップロードされたファイルを、フィールドの
tmpPathに移動します。 - リクエストデータにあるアップロードの情報を、ファイルの情報に置き換えます。ビヘイビアはこのファイルの情報を保存します。
bindUp()はコントローラーのモデルを使います。別のモデルを使うには、モデルの名前を渡します。
php
$this->Ring->bindUp('Post');確認画面のあるフォーム
確認画面のあるフォームでは、リクエストが何度かに分かれます。ユーザーはフォームでファイルをアップロードし、確認画面を見てから保存します。アップロードしたファイルは、この間ずっと残しておく必要があります。
bindDown()は、リクエストデータにあるファイルの情報をセッションに保存します。バリデーションエラーのあるフィールドは保存しません。
php
$this->Ring->bindDown();次のリクエストで新しいファイルがアップロードされなければ、bindUp()はセッションからファイルの情報を戻します。フォームのリクエストのたびにbindUp()を呼んでください。
描画の前にbindDown()を自動で呼ぶには、bindUp()の第2引数にtrueを渡します。
php
$this->Ring->bindUp(null, true);保存前のファイルも、Labelヘルパーで確認画面に表示できます。ファイルのURLを参照してください。
メソッド
| メソッド | 説明 |
|---|---|
bindUp($modelName = null, $autoBindDown = false) | リクエストデータにあるアップロードされたファイルをフィールドのtmpPathに移動し、ファイルの情報に置き換えます。ファイルがアップロードされていなければ、bindDown()がセッションに保存したファイルの情報を戻します。$autoBindDownを指定すると、描画の前にbindDown()を呼びます。 |
bindDown($modelName = null) | リクエストデータにあるファイルの情報をセッションに保存します。バリデーションエラーのあるフィールドは除きます。 |
