3

モジュール Field Group と Field Collection を使用して新しいコンテンツ タイプの作成を開始しましたが、うまくいきました。

しかし、フォームにオートコンプリート フィールドを追加したいのですが、その方法がわかりません。hook_form_alter を使用している可能性がありますが、フィールド コレクションにカスタム フィールドを追加できません。

これを行う方法を知っていますか?

どうもありがとう

PS:私はD7で働いています

4

2 に答える 2

3

fromフィールドにオートコンプリートを追加するには、次の手順を実行する必要があります。

1番目:hook_for_alter()を使用して、テキストフィールドにオートコンプリートパスを追加します

function YOUR_MODULE_form_alter(&$form, &$form_state, $form_id)
{
    if($form_id == "YOUR-CONTENT-TYPE_node_form")
    {
        $form['field_YOUR-FIELD']['und'][0]['value']['#autocomplete_path'] = 'my-module/autocomplete/path';
    }
}

2番目:hook_menu()を使用して、フィールドに#autocomplete_pathプロパティとして渡したメニューコールバックを定義します

function YOUR_MODULE_menu()
{
    $items = array();
    $items['my-module/autocomplete/path'] = array(
    'page callback'     => 'your_module_autocomplete_callback',
    'access callback'   => TRUE,
    'weight'            => 1,
    'type'              => MENU_CALLBACK,
    );
    return $items;
}

3番目と最後:アイテムをテキストフィールドに返すメニューコールバック関数を追加します

function your_module_autocomplete_callback($string)
{
    $items = array();
    $query = db_select('node', 'n');
    $value = $query->fields('n', array('title'));
    $value = $query->condition(db_and()->condition('n.type', 'YOUR_CONTENT_TYPE')->condition('title', '%' . db_like($string) . '%', 'LIKE'))->orderRandom()->execute();

    $i = 0;
    foreach ($value as $val)
    {
        $items[$val->name] = check_plain($val->name);
    }
    print drupal_json_output($items);
    exit();
}

これがお役に立てば幸いです...ムハンマド。

于 2012-05-04T14:49:08.407 に答える
1

複数のフィールドに適合する更新されたコード。

function YOUR_MODULE_form_alter(&$form, &$form_state, $form_id)
{
    if($form_id == "YOUR-CONTENT-TYPE_node_form")
    {
        foreach($form['field_match']['und'][0]['field_adversaires']['und'] as $k =>$v)
        {
            if(is_numeric($k))
            {
                $form['field_match']['und'][0]['field_adversaires']['und'][$k]['value']['#autocomplete_path'] = 'basketfacile_type/autocomplete';
            }
        }
    }
}

それがうまくいくことを願っています...ムハンマド。

于 2012-05-08T11:29:51.240 に答える