web-dev-qa-db-ja.com

ビューをフィルターするカスタムフォームを作成してDrupalgapを作成する方法

ユーザーがテキストボックスにクエリを入力し、drupalgapのボタンをクリックして、テキストを(オートコンプリートなしで)検索するビューページを作成し、結果にフラグリンクを設定したいdrupalgapビューのドキュメントページ公開されたフィルター http://docs.drupalgap.org/7/Views/Views_Exposed_Filters 「独自のフォームの構築と独自のURLパラメーターの構築」について説明されていますが、その例はありません。そのような使用例/チュートリアルはありますか?前もって感謝します、

更新:これは私が私のフォームを定義する関数です:

function form_custom_form(form, form_state) {
      try {
        form.elements['name'] = {
          type: 'textfield',
          title: 'Kart No',
          required: true
        };
        form.elements['submit'] = {
          type: 'submit',
          value: 'Ara'
        };
        form.elements['my_markup'] = {
          markup: '<ul id="arac_getir2_view" data-role="listview" class="ui-listview ui-listview-inset ui-corner-all ui-shadow"></ul>'
        };
        return form;
      }
      catch (error) { console.log('my_module_custom_form - ' + error); }
    }

これは動作するコードです:

function form_custom_form_submit(form, form_state) {
  form_value = form_state.values['name'];
  form.elements['my_markup'] = {
    markup: '<ul id="arac_getir2_view" data-role="listview" class="ui-listview ui-listview-inset ui-corner-all ui-shadow"></ul>'
  };
  arac_getir2_pageshow();
}
/*catch (error) { console.log('form_custom_form_submit - ' + error); }*/

function arac_getir2_pageshow() {
  var path_to_view = 'arac_getir';
  views_datasource_get_view_result(path_to_view, {
    success: function (data) {
      if (data.nodes.length > 0) {
        var items = [];

        $.each(data.nodes, function(index, object){
          var node = object.node;
          items.Push(
            l(node.title, '#') +  
            flag_quick_link(
                    'ara_getir', // The flag's machine name.
                    'node', // The entity type.
                    node.nid, // The entity id.
                    parseInt(node.flagged) ? true : false // The current flag status.
                    )
            );
        });
        console.log(items);
        drupalgap_item_list_populate('#arac_getir2_view', items);

      }
    }
  });
}

これはそうではないものです:

  function form_custom_form_submit(form, form_state) {
    form_value = form_state.values['name'];
    arac_getir_page();
  }

  function arac_getir_page() {
    try {
      var content = {};
      content['arac_list'] = {
        theme: 'view',
        format: 'ul',
        format_attributes: {
          /*'data-inset': 'true',*/
          'data-split-icon': 'star' /*the icon to use for the flag button */
        },
        path: 'arac_getir', /* the path to the view in Drupal */
        row_callback: 'arac_getir_list_row',
        empty_callback: 'arac_getir_list_empty',
        attributes: {
          id: 'arac_getir_view',
          'data-filter': 'true',
        }
      };
      return content;
    }
    catch (error) { console.log('arac_getir_page - ' + error); }
  }

  /**
   * The row callback to render a single row.
   */
   function arac_getir_list_row(view, row) {
    try {
      return l(row.title, 'node/' + row.nid) + row.field_kart_no + 
      flag_quick_link(
        'ara_getir',
        'node',
        row.nid,
        parseInt(row.flagged) ? true : false
        );
    }
    catch (error) { console.log('arac_getir_list_row - ' + error); }
  }

  /**
   *
   */
   function arac_getir_list_empty(view) {
    try {
      return t('Kart bulunamadı');
    }
    catch (error) { console.log('arac_getir_list_empty - ' + error); }
  }
1
sozkara

最初にカスタムフォームを作成できます: http://docs.drupalgap.org/7/Forms/Creating_a_Custom_Form

次に、その送信ハンドラーでViews Render Arrayを作成し、フォーム上の待機中のdivプレースホルダー要素(マークアップウィジェット)に挿入します。

http://docs.drupalgap.org/7/Views/Displaying_a_View/Views_Render_Arrayhttp://docs.drupalgap.org/7/Forms/Form_Elements/Element_Markup

または、送信ハンドラに引数のあるページに移動させる: http://docs.drupalgap.org/7/Pages/Page_Arguments

次に、そのページのpage_callbackは、Views Render Arrayを構築し、検索文字列をビューのコンテキストフィルターとして使用できます。

0