我使用的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