メインコンテンツに移動

メインナビゲーション

  • ホーム
  • サイトマップ
  • ビデオ
  • ご連絡

パンくず

  • ホーム
  • Drupalのフォーム(form API)にモジュール(Views)の検索結果を組み込みおよび検索条件の渡し方

Drupalのフォーム(form API)にモジュール(Views)の検索結果を組み込みおよび検索条件の渡し方

drupal
Views
form

やりたいこと:フォーム(form api)にViewsで生成した検索結果を組み込みたい

  • 環境:Drupal7.56 、Views7.x-3.18
  • Drupal(form API)を利用して、フォームを作成しました
  • このフォームに、Viewsで作成した検索結果を組み込みたいです
    フォームにViewsで生成した検索結果を組み込む

解決:Viewsの関数(views_get_view)で作成したビューを取得し、フォームに組み込む

  • Viewsで作成した検索ビューの取得はViewsに公開された関数を利用します
    $view = views_get_view("view_machine_name") //ビューの名前で
    $view->set_display("view_machine_name") ;  //ディスプレイ名で
    $view->pre_execute();
    $view->execute();
    print $view->render();
  • ビュー/ディスプレイ名のシステム内部名を探すのは面倒なので、Viewsの編集画面にあるURLに乗っています: ~/views/view/ビューのマシン名/edit/ディスプレイのマシン名
    Viewsの編集画面にあるビュー/ディスプレイ名

検索条件をビューに渡し方:ビューのハンドル($view)に直接に設定

  • Viewsの検索条件は二か所あります
    • コンテキストフィルダー:URL、ログインユーザー情報から検索
    • フィルダー:各フィールドにイコール、含みなどの検索条件設定
  • コンテキストフィルダーに渡した検索条件で完全一致検索は一般的である
    • $view->set_arguments(array(parameter))
    • viewsのハンドルに直接にセット
    • 但し、検索の条件(含み、前方一致など)の設定ができません
  • ハンドル$viewにフィルダーの検索条件を設定
    • $view->display_handler->options['filters']['title']['value'] = value
    • ビューのフィルダーで検索方法:含み、前方一致などの設定ができます

フォーム(form API)に組み込み方法:”#markup”プロパティの使用

  • 特定なビューを取得して、レンダリングします:$view->render();
  • レンダリングされたビューをフォームの"#maukup"にセットして表示させます
    $view = views_get_view("view_machine_name") //ビューの名前で $view->set_display("view_machine_name") ; //ディスプレイ名で $view->pre_execute(); $view->execute(); 
    $redered_view = $view->render();
    $form['search_result'] = array(
            "#type" => "item" ,
            "#markup" => $redered_view,
    );

     

ホーム

古松

検索

Article Category

  • apache(7)
  • css(19)
  • drupal(295)
  • Electron(4)
  • html(34)
  • javascript(27)
  • laravel(4)
  • linux(5)
  • macOS(2)
  • mysql(13)
  • php(19)
  • python(4)
  • SEO(12)
  • video(72)
  • Visual Studio Code(4)
  • windows(13)
  • wordpress(32)