我正在使用PHP框架Agile Toolkit版本4.3.2(此时最新)。我在一个扩展默认Page类的页面上。
假设我有一个表单对象,如:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View x = inflater.inflate(R.layout.tab_layout,null);
tabLayout = (TabLayout) x.findViewById(R.id.tabs);
viewPager = (ViewPager) x.findViewById(R.id.viewpager);
viewPager.setAdapter(new MyAdapter(getChildFragmentManager()));
tabLayout.setupWithViewPager(viewPager);
// Find out which day is today
int dayIndex = getCurrentDayIndex();
// Select the corresponding tab
TabLayout.Tab tab = tabLayout.getTabAt(dayIndex);
tab.select();
return x;
}
如何获取表单对象的HTML?我想将表单的HTML发送到另一个模板部分,例如:
$form = $this->add('Form');
$form->addField('text', 'name', 'Name');
$form->addSubmit('Save');
如果我使用HTML代码而不是$ form对象,则上面的函数可以工作。
但在这种情况下,当我刷新页面时,而不是表单HTML会出现如下字符串:对象表单(22f8a7bc__ancedsearch_form)
我尝试过: $ form-> render()或 $ form-> getHTML(),但这些功能不起作用。
那么请告诉我,如何在敏捷工具包中渲染对象?如何获取对象的HTML代码。
修改
我正在扩展网格布局。对于每列,我添加了一个搜索过滤选项。我已经扩展了Grid_Advanced.php以便能够自定义它。在每个列上,在表头(列名称)下面,我正在插入一个带有输入的表单(我正在发送列名字段):
$this->template->trySetHTML('Content', $form);
$ form_html是从扩展atk4 / lib / Filter.php的文件返回的(它类似于quicksearch)。 quicksearch自动将html添加到网格中,但在我的情况下,我需要将它添加到表的头部,在列名后面。这就是我试图获取表单HTML的原因。
在这个文件中,我有一个类似于:
的init函数$header_col->trySetHTML('advance_search_filter', $form_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;
}
有什么想法吗?为什么表格是空的?我使用addField将字段添加到现有字段,但字段可能存在。我不知道如何获取它们,以获取现有表单的HTML。
答案 0 :(得分:2)
对于大多数观点:
$html = $view->getHTML();
然而,表格可能会更棘手。
在您所描述的解决方案中(编辑后),您似乎并不真正需要表单的所有功能
获取单个字段的HTML:
$field->getInput();
这将为您提供可以放置在列标题中的“input”元素。您还可以使用“Form_Plain”将GRID包装在<form>
标记内。
但您需要手动处理提交。