PHP フレームワーク Agile Toolkit バージョン 4.3.2 (現時点では最新) を使用しています。デフォルトの Page クラスを拡張するページにいます。
次のようなフォーム オブジェクトがあるとします。
$form = $this->add('Form');
$form->addField('text', 'name', 'Name');
$form->addSubmit('Save');
フォーム オブジェクトの HTML を取得するにはどうすればよいですか? フォームの HTML を次のような別のテンプレート パーツに送信したいと考えています。
$this->template->trySetHTML('Content', $form);
$form オブジェクトの代わりに HTML コードを使用すると、上記の関数が機能します。
しかし、この場合、ページを更新すると、フォーム HTML の代わりに次のような文字列が表示されます: Object Form(22f8a7bc__ancedsearch_form)
$form- >render()または$form->getHTML()を試しましたが、これらの関数は機能しません。
教えてください、アジャイルツールキットでオブジェクトをレンダリングするにはどうすればよいですか? オブジェクトの HTML コードを取得する方法を教えてください。
編集
グリッド レイアウトを拡張しています。列ごとに、検索フィルタリング オプションを追加します。Grid_Advanced.php をカスタマイズできるように拡張しました。各列のテーブル ヘッダー (列名) の下に、入力を含むフォームを挿入しています (列名フィールドを送信しています)。
$header_col->trySetHTML('advance_search_filter', $form_html);
$form_html は、atk4/lib/Filter.php を拡張するファイルから返されます (クイックサーチに似ています)。クイックサーチは自動的に html をグリッドに追加しますが、私の場合は、列名の後にテーブルのヘッドに追加する必要があります。そのため、フォームの HTML を取得しようとしています。
このファイルには、次のような init 関数があります。
public function init()
{
parent::init();
$this->addClass('grid-extended-search atk-box ui-widget ui-widget-content');
$this->default_controller = 'Controller_..._MVCForm';
$this->template->trySet('fieldset', 'atk-row');
$this->bs = $this->addSubmit('Search');
$this->save = $this->bs;
}
しかし、これは何も返さないので、テンプレートの HTML を返す関数を作成しました。しかし、フォームは空だったので、フィールドを再作成しました (これは悪いことです):
$m = $this->view->model
foreach($this->fields as $f) {
$field = $this->view->columns[$f];
if($m->hasField($f)) {
if($field['type'] == 'text') {
$field_html = $this->addField('line', $f, $field['descr']);
$form_html .= $field_html->getInput();
}
$this->template->setHTML('Content', $form_html);
}
}
何か案が?フォームが空なのはなぜですか? addField を使用してフィールドを既存のフィールドに追加しましたが、フィールドはおそらく存在します。既存のフォームの HTML を取得する方法がわかりません。