我使用的PHP框架敏捷工具包版本4.3.2(最新在這一刻)。我在擴展默認頁面類的頁面上。如何在Agile Toolkit中呈現(獲取HTML)表單對象?
假設我有一個像表單對象:
$form = $this->add('Form');
$form->addField('text', 'name', 'Name');
$form->addSubmit('Save');
如何獲取表單對象的HTML?我想表單的HTML發送到另一個模板的一部分,是這樣的:
$this->template->trySetHTML('Content', $form);
功能從上面的工作,如果我使用HTML代碼,而不是$表單對象。
但是當我刷新頁面,而不是形式HTML這種情況下出現的字符串,如:對象表(22f8a7bc__ancedsearch_form)
我想:$形式 - >渲染()或$ form-> getHTML()但這些函數不起作用。
那麼請告訴我,如何渲染敏捷工具包中的對象?我如何獲得對象的HTML代碼。
編輯
我延長了網格佈局。對於每一列我添加一個搜索過濾選項。我已經擴展了Grid_Advanced.php以便能夠自定義它。每一列上,表頭下方(列名稱),我插入一個形式與輸入(我送列名稱字段):
$header_col->trySetHTML('advance_search_filter', $form_html);
的$ form_html是從延伸的文件返回atk4/lib/Filter.php(與quicksearch類似)。 quicksearch會自動將html添加到網格中,但在我的情況下,我需要將它添加到表格的頭部,列名後面。這就是爲什麼我試圖獲取表單的HTML。
在這個文件我也有初始化函數看起來像:
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。
$ form-> getHTML();返回這些空的HTML標籤:
– Pascut我修改了原來的問題,請參見下面的 「編輯」 的細節。 – Pascut
查看您的代碼 - 爲什麼不簡單地在您的網格標題中添加「字段」? Field有一個方法'getInput()',您可以使用它將其插入到列的標題中。您可以在Form_Plain內手動包裝Grid,並使用GET等方式提交。 – romaninsh