2016-11-24 152 views
2

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

回答

2

对于大多数的观点:

$html = $view->getHTML(); 

然而,它可能是一个形式更加棘手。

在您所描述(编辑后)的解决方案,似乎你并不真正需要的表格的所有功能

得到各个领域的HTML:

$field->getInput(); 

这将为您提供“输入”元素,您可以将其放置在列标题中。您也可以使用“Form_Plain”将您的GRID封装在<form>标记中。

虽然您需要手动处理提交。

+0

$ form-> getHTML();返回这些空的HTML标签: – Pascut

+0

我修改了原来的问题,请参见下面的 “编辑” 的细节。 – Pascut

+1

查看您的代码 - 为什么不简单地在您的网格标题中添加“字段”? Field有一个方法'getInput()',您可以使用它将其插入到列的标题中。您可以在Form_Plain内手动包装Grid,并使用GET等方式提交。 – romaninsh

相关问题