2016-11-24 37 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

相關問題