Как отобразить (получить HTML) объект формы в Agile Toolkit?

Я использую PHP-фреймворк Agile Toolkit версии 4.3.2 (последняя на данный момент). Я нахожусь на странице, которая расширяет класс Page по умолчанию.

Предположим, у меня есть объект формы, такой как:

$form = $this->add('Form');
$form->addField('text', 'name', 'Name');
$form->addSubmit('Save');

Как мне получить HTML объекта формы? Я хочу отправить HTML формы в другую часть шаблона, что-то вроде:

$this->template->trySetHTML('Content', $form);

Функция сверху работает, если я использую HTML-код вместо объекта $ form.

Но в этом случае, когда я обновляю страницу, вместо формы HTML появляется строка вроде: Форма объекта (22f8a7bc__ancedsearch_form)

Я старался: $ Форма-> Render () или же $ Форма-> getHTML () но эти функции не работают.

Поэтому, пожалуйста, скажите мне, как я могу отобразить объект в гибком инструментарии? Как я могу получить HTML-код объекта.

редактировать

Я расширяю сетку. Для каждого столбца я добавляю опцию фильтрации поиска. Я расширил Grid_Advanced.php, чтобы иметь возможность настроить его. В каждом столбце, ниже заголовка таблицы (имя столбца), я вставляю форму с вводом (отправляю поле имени столбца):

$header_col->trySetHTML('advance_search_filter', $form_html);

$ Form_html возвращается из файла, который расширяет atk4 / lib / Filter.php (это похоже на quicksearch). Быстрый поиск автоматически добавляет html в сетку, но в моем случае мне нужно добавить его в заголовок таблицы после имени столбца. Вот почему я пытаюсь получить HTML-код формы.

В этом файле у меня есть функция init, которая выглядит примерно так:

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();

Это даст вам элемент «input», который вы можете поместить в заголовки вашего столбца. Вы также можете использовать «Form_Plain», чтобы обернуть вашу GRID внутри <form> тег.

Вы должны были бы обработать представление вручную, все же.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]