Вграждане на изгледи (VBO формуляр) с открит филтър за формуляр във формуляр за редактиране на възел

Регистър: вмъкнете/вградете формуляр в друг формуляр, като същевременно запазите оригиналното <form> маркиране във вградения изход. В този случай това е формуляр за групови операции на Views с открити филтри за формуляри, вградени във формуляр за редактиране на възел.

Проблем: когато е вградено, всичко изглежда добре на повърхността и изгледът показва формата и всички нейни елементи. Въпреки това, когато се изследва рендираният изход на Views 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 на Views)

Тестван с:

  • използвайки hook_form_alter

  • theme_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>

Сигурен съм, че пропускам няколко от другите начини, които съм опитвал да реша това, но това трябва да е достатъчно, за да служи като примери за изпробвани неща.

Без значение как формулярът е вграден във формуляра за редактиране на възел, филтърът за изложени изгледи не работи, тъй като елементът <form> липсва, но AJAX работи с останалата част от VBO формуляра и при използване на пейджър и AJAX обновява формуляра за изгледи дисплей, маркирането на филтъра за разкрити формуляри се изобразява правилно и филтърът работи.

На този етап ми липсват идеи. Наистина ще оценя някои насоки или примерни кодове за това как да опитам това.

Благодаря предварително.


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


Отговори (1)


Исках да направя абсолютно същото и се борих като теб. Най-накрая намерих нещо, което работи за мен. Контекст: Drupal 6, поставяне на ajax изглед с открит филтър във формуляр за редактиране на възел.

Създадох „блок“ на дисплея в изгледа и просто го вмъкнах чрез потребителския интерфейс за администриране на блокове... и се оказа, че работи добре.

person fourmi4x    schedule 08.04.2013