2017-01-06 8 views
0

У меня есть следующее поле (в качестве примера), созданное с помощью Field API, который отлично работает. Поскольку я хочу добавить autocomplete функциональность (уже работающая, не показана здесь), а также значение по умолчанию от $_POST переменной, я начал изменять поле с hook_form_alter.D7: Поле API Поле не сохраняется при использовании hook_form_alter

Изменяя поле работает как шарм, НО поле под не будут сохранены больше в узел и даже появляется на другом месте в узловой форме редактирования.

<?php 
    function trian_portal_enable() { 
    // create assigned License field 
    if (!field_info_field('field_assigned_license')){ 
     $field = array(
     'field_name' => 'field_assigned_license', 
     'type' => 'text', 
     'cardinality' => 1, 
    ); 
     field_create_field($field); 

     $instance = array(
      'field_name' => 'field_assigned_license', 
      'entity_type' => 'node', 
      'label' => t('Assigned License'), 
      'bundle' => 'kunden_download', 
      'description' => t('Enter License assigned to this download'), 
      'required' => FALSE, 
      'settings' => array(
      // Here you inform either or not you want this field showing up on the user profile edit form. 
       'kunden_download_node_form' => 1, 
     ), 
      'widget' => array(
       'type' => 'textfield', 
     ), 
     ); 
     field_create_instance($instance); 
    } 
    } 

    function trian_portal_form_alter(&$form, $form_state, $form_id) { 


    if ($form_id == 'kunden_download_node_form') { 


     $form['field_assigned_license'] = array(
     '#title' => t('Assigned Licence'), 
     '#type' => 'textfield', 
     '#default_value' => ($_REQUEST['lid']) ? $_REQUEST['lid']: '', 
     '#required' => ($_REQUEST['lid']) ? 1:0, 
    ); 

    } 
    } 
?> 

ответ

0

Ответ был дан мне удивительным #drupal Шанель (спасибо @graper =))

Что случилось в том, что:

$form['field_assigned_license'] = array(
     '#title' => t('Assigned Licence'), 
     '#type' => 'textfield', 
     '#default_value' => ($_REQUEST['lid']) ? $_REQUEST['lid']: '', 
     '#required' => ($_REQUEST['lid']) ? 1:0, 
    ); 

будет в основном переопределить все, сохраненное в $form['field_assigned_license'] , Правильный подход заключается в том, чтобы просто переопределить определенный параметр, который я хочу, например. $form['field_assigned_customer']['und'][0]['value']['#default_value'] или объединить исходный массив с настройками.

 Смежные вопросы

  • Нет связанных вопросов^_^