バージョン 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()
$form->getAttributes(true); |
引数の順番が変更されました。これは addElement() を使用して QuickForm に要素を追加する際の方法に合わせるためです。 代わりに HTML_QuickForm::addGroup() を使用し、要素ラベルと要素名を入れ替えてください。
ヘッダは、その他の要素と同じ扱いになりました。 HTML_QuickForm_static を拡張した HTML_QuickForm_header 要素が新しく作成されています。
$form->addElement('header', $header_name, $header_text); |
ほんとうにこの機能が必要なら、以下を使用してください。
$form->addElement('html', $data) |
これらのメソッドはレンダラが処理するようになっています。 これらのメソッドの使用法は、選択したレンダラに依存します。 QuickForm のデフォルトレンダラの場合は、このように使用します。
$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>'); |
ファイル関連のメソッドや規則は、ファイル要素クラス HTML_QuickForm_file に移動しました。そのほうがより自然であり、 ファイルアップロードを使用しない場合にまでファイル関連のコードを インクルードする必要がなくなるからです。 これらのメソッドには、次のようにアクセスします。
$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'); } |
$file =& $form->getElement('myfile'); if ($file->isUploadedFile()) { $fileInfo = $file->getValue(); } |