Я использую 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 появляется строка вида: Object Form(22f8a7bc__ancedsearch_form)
Я пробовал: $form->render() или $form->getHTML(), но эти функции не работают.
Итак, скажите мне, как мне отрендерить объект в agile toolkit? Как я могу получить HTML-код объекта.
Изменить
Я расширяю макет сетки. Для каждого столбца я добавляю опцию фильтрации поиска. Я расширил Grid_Advanced.php, чтобы иметь возможность его настраивать. В каждом столбце ниже заголовка таблицы (имя столбца) я вставляю форму с вводом (отправляю поле имени столбца):
$header_col->trySetHTML('advance_search_filter', $form_html);
$form_html возвращается из файла, который расширяет atk4/lib/Filter.php (это похоже на 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-код существующей формы.