Встраивание представлений (форма VBO) с фильтром открытой формы в форму редактирования узла

Случай: вставьте / встроите форму в другую форму, сохранив исходную разметку <form> во встроенном выводе. В данном случае это форма массовых операций представлений с открытыми фильтрами формы, встроенными в форму редактирования узла.

Проблема: когда он встроен, все выглядит хорошо на поверхности, и в представлении отображается форма и все ее элементы. Однако при изучении визуализированного вывода представлений Exposed Form из Exposed Filter удаляется <form> разметка. Однако, когда я добавляю блок в область стандартным способом на той же странице, что и форма редактирования узла, выходные данные Views Exposed Form содержат разметку <form>, и фильтр работает нормально.

Примечания: содержимое представлений формы VBO не изменяется, и его <form> разметка в форме редактирования узла остается неизменной. Только фильтр открытой формы в том же отображении представлений удаляется <form>. Кроме того, при использовании пейджера в отображении представлений и с параметром Использовать Ajax, установленным на Да, если я перейду на следующую страницу результатов представлений, обновленная форма Ajax будет содержать правильную разметку <form> для открытой формы представлений, и с этого момента фильтр будет работать. .

Что я пробовал:

  • установка отображаемой формы для отображения в блоке, а затем встраивание открытого блока формы отдельно с помощью module_invoke ('views', 'block', 'view', '-exp-Instructor_select-page_1').

  • встраивание представления с использованием views_embed_view ('VIEW-NAME', 'VIEW-DISPLAY') - независимо от того, был ли VIEW-DISPLAY 'default', 'page_1' или 'block_1' - та же проблема.

  • встраивание отображения блока Views с помощью module_invoke ('views', 'block', 'view', 'VIEWS-DISPLAY-block_1');

  • вставка формы напрямую с помощью drupal_build_form ($ form_id, & $ form_state) (замена представлений для drupal_get_form)

Проверено с:

  • используя hook_form_alter

  • тема_preprocess_NODETYPE_node_form ($ vars)

  • жесткое кодирование разметки в шаблоне фильтра с настраиваемым представлением:

  • <form id="views-exposed-form-VIEWS-DISPLAY" method="get" accept-charset="UTF-8" action="/URL" class="views-processed"> ПРОСМОТРЕТЬ КОД ШАБЛОНА ФОРМЫ <input type="hidden" value="instructor_select" name="view_name"><input type="hidden" value="block_1" name="view_display_id"><input type="hidden" value="" name="view_args"><input type="hidden" value="user/1/edit/studio" name="view_path"><input type="hidden" value="URL-PATH" name="view_base_path"><input type="hidden" value="VIEWS-DISPLAY" name="view_dom_id"><input type="hidden" value="0" name="pager_element"></form>

Я уверен, что мне не хватает некоторых других способов, которыми я пытался это решить, но этого должно быть достаточно, чтобы служить примерами того, что я испробовал.

Независимо от того, как форма встроена в форму редактирования узла, фильтр Views Exposed не работает, так как элемент <form> отсутствует, AJAX, однако, работает с остальной частью формы VBO и при использовании пейджера и AJAX, обновляющего форму Views display разметка Exposed Form Filter отображается правильно и фильтр работает.

На данный момент у меня нет идей. Я был бы очень признателен за несколько указателей или примеров кода о том, как это сделать.

Заранее спасибо.


person user897897    schedule 07.02.2013    source источник


Ответы (1)


Я хотел сделать то же самое и боролся, как и вы. Наконец-то я нашел то, что работало для меня. Контекст: Drupal 6, помещающий представление ajax с открытым фильтром в форму редактирования узла.

Я создал "блок" отображения в представлении и просто вставил его через пользовательский интерфейс управления блоком ... и оказалось, что он работает нормально.

person fourmi4x    schedule 08.04.2013