ケース: 埋め込み出力で元のマークアップを維持しながら、別のフォーム内にフォームを挿入/埋め込み<form>
ます。この場合、それは、ノード編集フォーム内に埋め込まれた公開フォーム フィルターを含むビュー一括操作フォームです。
問題: 埋め込まれた場合、すべてが表面にきれいに表示され、ビューにはフォームとそのすべての要素が表示されます。ただし、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' であるかどうか - 同じ問題。
module_invoke('views', 'block', 'view', 'VIEWS-DISPLAY-block_1'); を使用して Views ブロック表示を埋め込む
drupal_build_form($form_id, &$form_state) を使用してフォームを直接挿入する (ビューの drupal_get_form の置き換え)
テスト済み:
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 を使用してビュー フォーム表示を更新すると機能します。 、公開フォーム フィルター マークアップが正しくレンダリングされ、フィルターが機能します。
この時点で、私はアイデアがありません。これを試みる方法について、いくつかのポインタまたはコードサンプルをいただければ幸いです。
前もって感謝します。