- ベストアンサー
pear HTML_Quickformのボタンの位置を変更したい
[入力欄][送信ボタン] という風に、一列に表示したいのですが display()でフォームを出力するとボタンが改行されてしまいます。 解決方法を知ってたら教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
noname#243182
回答No.2
レンダラを特に指定しない場合、デフォルトのレンダラが使われます。 マニュアルを読み進めていくと、フォーム要素のテンプレートにはテーブル要素が設定してあり、インプット要素のテンプレートにはテーブルデータ要素が設定してあることが分かります。 このテンプレートは利用者側で操作することが出来ますので、例えばフォーム要素、インプット要素のテンプレートにディビジョン要素を設定し、それぞれにIDを設定します。このIDを元に、スタイルシートで回り込みを使ってレイアウトを調整してみてはいかがでしょうか。 デフォルトのレンダラを使う必要がない場合はこの限りではなく、より詳細なテンプレート操作が可能となります。マニュアルに記載されているレンダラのリストから、馴染みのあるものを選択されるとよいでしょう。
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
回答No.1
>HTML_Quickform についての知識は欠片もないですが、表示方法を調整するなら おそらくcssでやればいいのでは?
質問者
補足
cssは少し調べてみましたが、できるのかどうかわかりません。 $form->display(); で入力欄もボタンもまとめて出力されてしまうので タグを挿入することはできません。 quickformの本体ファイルをいじらないと無理なのかもしれないです。 しようがないのでjavascriptでやってみることにします。
お礼
参考URLとアドバイスのおかげで問題を解決することができました。 ありがとうございます。 setElementTemplateの使い方はちょっと迷いましたがサンプルをググって利用させてもらいました。 require_once "HTML/QuickForm.php"; $form = new HTML_QuickForm('renderer_test','POST'); $form->addElement("text","name","名前"); $form->createElement("submit","send","確認"); $renderer = $form->defaultRenderer(); $renderer->setElementTemplate("{label}{element}","name"); $renderer->setElementTemplate("{element}","send"); $form->accept($renderer);