LoginSignup
8
11

More than 3 years have passed since last update.

symfony 1.4 メモ(フォーム)

Last updated at Posted at 2017-04-02
  1. symfony 1.4 メモ(アクション)
  2. symfony 1.4 メモ(context)
  3. symfony 1.4 メモ(モデル)
  4. symfony 1.4 メモ(schemaの書き方)
  5. symfony 1.4 メモ(Doctrine)
  6. symfony 1.4 メモ(フォーム)
  7. symfony 1.4 メモ(コマンド)
  8. symfony 1.4 メモ(ユーティリティ)

Classの継承

フォーム

ModelForm > BaseModelForm > BaseFormDoctrine > sfFormDoctrine > sfFormObject > BaseForm > sfFormSymfony > sfForm
ModelFormFilter > BaseModelFormFilter > BaseFormFilterDoctrine > sfFormFilterDoctrine > sfFormFilter > BaseForm > sfFormSymfony > sfForm

ウィジット

sfWidgetFormInput > sfWidgetForm > sfWidget

ウィジットスキーマ

sfWidgetFormSchema > sfWidgetForm > sfWidget

オブジェクトの構成

  • Form
    フォーム全体を管理するオブジェクト
    • widgetSchema
      各ウィジットをまとめたウィジット。これをrenderするとフォームをまとめて出力する
      • widget
        各フォームのウィジット。
    • ValidatorSchema
      各バリデータをまとめたもの。
      • Validator
        各フォームのバリデータ。

デフォルトで用意されているメソッド

// フォームから送られてきた値を登録し、入力チェックを行う。
$this->bind(array $Values )

// 入力チェック済みかどうか。
$this->isBound()

// 入力チェックでエラーが無ければtrue。
$this->isValid()

// 入力チェック後の値を取得。
$this->getValues()
$this->getValue($field)

// デフォルト値の設定。
$this->setDefault($name, $default)
$this->setDefaults($defaults)

// デフォルト値の取得。
$this->getDefault($name)
$this->getDefaults()

// 保存前の処理拡張用。
$this->doUpdateObject($values)

※\$thisの部分はフォーム以外(アクション等)で使う場合はフォームオブジェクト($form等)に。

ウィジットの種類

基本ウィジット

sfWidgetFormInput
テキスト入力
sfWidgetFormInputCheckbox
チェックボックス(単独)
sfWidgetFormInputHidden
hiddenタグ
sfWidgetFormInputPassword
パスワード入力
sfWidgetFormInputFile
ファイルアップロード
sfWidgetFormTextarea
テキストエリア

共通のオプション

is_hidden
フォームウィジェットが hidden であることが必須であれば true そうでなければ false (デフォルトは false)
needs_multipart
ウィジェットがマルチパートフォームを必要とするのであれば true、そうでなければ false (デフォルトは false)
default
ウィジェットをレンダリングする際に使うデフォルト値
label
ウィジェットがウィジェットスキーマによってレンダリングされるときに使うラベル
id_format
生成される HTML id 属性用のフォーマット (デフォルトは %s)

特殊なウィジット

sfWidgetFormInputFileEditable
ファイルを編集できるアップロード

追加オプション
file_src
現在の画像の web ソースのパス(必須)
edit_mode
編集モードを有効にするには true、そうでなければ false
is_image
表示可能なファイルであるかどうか
with_delete
削除のチェックボックスを追加するかどうか
delete_label
テンプレートによって使用される削除ラベル
template
このウィジェットをレンダリングするために使用する HTML テンプレート (%input% %delete% %delete_label% %file%)


sfWidgetFormTextareaTinyMCE
WYSIWYG エディタ

追加オプション
theme
Tiny MCE のテーマ (デフォルトは advanced)
width
height
高さ
config
JavaScript 固有の設定の配列


sfWidgetFormChoice
選択ウィジェット

追加オプション
expanded、multiple
expanded multiple 生成されるフォーム
false false プルダウン
false true プルダウン(複数選択可)
true false ラジオボタン
true true チェックボックス
choices
可能な選択肢の配列 (必須)
renderer_class
デフォルトのレンダリングの代わりに使うレンダリングクラス
sfWidgetFormSelectDoubleList
二重リスト表示
sfWidgetFormJQueryAutocompleter
jQuery 自動入力補完


renderer_options

レンダラのコンストラクターに渡されるオプション

renderer

レンダラウィジェット (expanded と renderer_options オプションを上書きする)




以下はラジオボタンとチェックボックスの場合のオプション


separator

それぞれの入力チェックボックス/ラジオボタンの間で使用する区切り文字

label_separator

入力チェックボックス/ラジオボタンとラベルの間で使用する区切り文字

class

<ul> タグ用のクラス

formatter

チェックボックスの選択をフォーマットするために呼び出す callable

callable なフォーマッターは引数としてウィジェットと入力の配列を受け取る

template

オプションをグループに分類する際に使用するテンプレート (%group% %options%)



sfWidgetFormDoctrineChoice
選択ウィジェット(Doctrine) 追加オプション
model
モデルクラス (必須)
add_empty
最初に空の値を追加するかどうか (デフォルトは false)
オプションがブール値ではない場合、値はテキストの値として使われる
method
オブジェクトの値を表示するために使うメソッド (デフォルトは __toString)
key_method
オブジェクトのキーを表示するために使うメソッド (デフォルトは getPrimaryKey)
order_by
2つのフィールドで構成された配列
* 結果によって並べ替えされるカラム (PhpName フォーマットでなければならない)
* asc もしくは desc
query
オブジェクトを読み取る際に使うクエリ
connection
使用する Doctrine の接続 (デフォルトでは null)
multiple
選択タグが複数の選択を許可する場合は true
table_method
オブジェクトを得るために使うメソッド


sfWidgetFormJQueryDate
jQuery 日付入力

ウィジットのmethod

// オプション
setOptions(array('default' => 'デフォルト値'));   // マージでなく上書きになるので注意
setOption('default', 'デフォルト値');

// 設定
setAttributes(array('class' => 'foo')); // マージでなく上書きになるので注意
setAttribute('class', 'foo');

// 出力
render('name', '値', array('class' => 'foo'));

// hidden
isHidden()
setHidden()

// needs_multipart
needsMultipartForm()

// default
getValue()
setValue()

// label
getLabel()
setLabel()

// id_format
getIdFormat()
setIdFormat()
8
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
11