バージョン 3.2 への移行
バージョン 3.2 への移行 – API の注意すべき変更点
なぜ変更されたのですか?
バージョン 2.x 以降 HTML_QuickForm の機能は大きく向上しました。
新たにレンダラの層が追加されたのに伴い、QuickForm
の本体クラスに存在した多くのメソッドがレンダラのメソッドにコピーされました。
本体クラスのメソッドはユーザの移行作業のために残されていましたが、
リリース 3.2 では削除されました。これにより、QuickForm クラスが
より軽量でしっかりしたものとなりました。
同時に、ファイルアップロードの検証機能は file 要素に移動しました。
こちらのほうがより適切な場所だからです。
削除されたメソッドは以下のとおりです。
QuickForm 関連
HTML_QuickForm::getAttributesString()
HTML_QuickForm::addElementGroup()
HTML_QuickForm::addHeader()
HTML_QuickForm::addData()
レンダラ関連
HTML_QuickForm::setElementTemplate()
HTML_QuickForm::setHeaderTemplate()
HTML_QuickForm::setFormTemplate()
HTML_QuickForm::setRequiredNoteTemplate()
HTML_QuickForm::clearAllTemplates()
HTML_QuickForm_group::setElementTemplate()
HTML_QuickForm_group::setGroupTemplate()
ファイルアップロード関連
HTML_QuickForm::isUploadedFile()
HTML_QuickForm::getUploadedFile()
HTML_QuickForm::moveUploadedFile()
あなたのコードを対応させる方法
QuickForm 関連
- HTML_QuickForm::getAttributesString()
<?php
$form->getAttributes(true);
?>
とすると、HTML_Common::getAttributes()
メソッドと同じ値を返します。
- HTML_QuickForm::addElementGroup()
引数の順番が変更されました。これは
addElement()
を使用して QuickForm に要素を追加する際の方法に合わせるためです。
代わりに
HTML_QuickForm::addGroup()
を使用し、要素ラベルと要素名を入れ替えてください。
- HTML_QuickForm::addHeader()
ヘッダは、その他の要素と同じ扱いになりました。
HTML_QuickForm_static
を拡張した
HTML_QuickForm_header
要素が新しく作成されています。
<?php
$form->addElement('header', $header_name, $header_text);
?>
このようにすることでも、指定した名前のヘッダのレンダリングをカスタマイズ可能です。
- HTML_QuickForm::addData()
ほんとうにこの機能が必要なら、以下を使用してください。
<?php
$form->addElement('html', $data)
?>
あるいは、何らかのテンプレートベースのレンダラを使用することを検討してください。
レンダラ関連
これらのメソッドはレンダラが処理するようになっています。
これらのメソッドの使用法は、選択したレンダラに依存します。
QuickForm のデフォルトレンダラの場合は、このように使用します。
<?php
$form =& new HTML_QuickForm('myform');
$renderer =& $form->defaultRenderer();
$renderer->setFormTemplate('<table><form{attributes}>{content}</form></table>');
$renderer->setHeaderTemplate('<tr><td colspan="2"><b>{header}</b></td></tr>');
$renderer->setGroupTemplate('<table><tr>{content}</tr></table>');
$renderer->setGroupElementTemplate('<td>{element}<br /><!-- BEGIN required -->*<!-- END required -->{label}</td>');
?>
defaultRenderer()
は、QuickForm と統合したレンダラへの参照を返します。もちろん、QuickForm
では Sigma、ITX、Smarty、Flexy などの
その他のレンダラ
を使用することも可能です。
それらのレンダラでどのようなメソッドが使えるかについては、
各レンダラのドキュメントを参照ください。
ファイルアップロード関連
ファイル関連のメソッドや規則は、ファイル要素クラス
HTML_QuickForm_file
に移動しました。そのほうがより自然であり、
ファイルアップロードを使用しない場合にまでファイル関連のコードを
インクルードする必要がなくなるからです。
これらのメソッドには、次のようにアクセスします。
<?php
$form = new HTML_QuickForm('myform');
$file =& $form->addElement('file', 'myfile', 'Your file:');
$form->addRule('myfile', 'Cannot exceed 1776 bytes', 'maxfilesize', 1776);
if ($file->isUploadedFile()) {
$file->moveUploadedFile('/tmp', 'testfile.txt');
}
?>
あるいは、このようになります。
<?php
$file =& $form->getElement('myfile');
if ($file->isUploadedFile()) {
$fileInfo = $file->getValue();
}
?>