Miért nem menti el a field-et ?

eMeLA képe

Megtudja nekem mondani valaki, hogy miért nem menti el a Drupal a field tartalmát az adatbázisba?

A sor, csak éppen NULL van a szám helyett!?

autodate.install

 
function autodate_field_schema($field) {
  switch ($field['type']) {
    case 'autodate_field':
      $columns = array(
        'autodatum' => array(
          'type' => 'int',
          'length' => 11,
          'not null' => FALSE,
        ),
      );
      break;
  }
 
  return array('columns' => $columns);
} 

autodate.module
function autodate_field_info() {
  return array(    
    'autodate_field' => array(
      'label' => t('Autodátum'),
      'description' => t('Automatikus dátum.'),
      'default_widget' => 'autodate_auto',
      'default_formatter' => 'autodate_show',
    ),
  );
}
function autodate_field_widget_info() {
  return array(
    'autodate_auto' => array(
      'label' => t('Dátum mező'),
      'field types' => array('autodate_field'),
    ),
  );
}
 
function autodate_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
  $value = isset($items[$delta]['autodate_field']) ? $items[$delta]['autodate_field'] : time();
 
  $widget = $element;
  $widget['#delta'] = $delta;
 
  switch ($instance['widget']['type']) {
    case 'autodate_auto':
      $widget += array(
        '#type' => 'hidden',
        '#value' => $value,        
      );
      break;   
  }
 
  $element['autodate'] = $widget;
  return $element;
}
 
function autodate_field_is_empty($item, $field) {
  if (empty($item['autodate']) && (string) $item['autodate'] !== '0') {
    return TRUE;
  }
  return FALSE;
}
Drupal verzió: 
eMeLA képe

A sor, csak éppen NULL van a szám helyett!?

helett

A sor létrejön, csak éppen NULL van a field mezőben!?

0
0

...mit tudok: http://web.termuves.hu

pp képe

Az autodatum (hook_field_schema) adatbázis mezőt és az autodate_auto form elemet mi kapcsolja össze? Próbáld azonos névvel.

pp

0
0
eMeLA képe

Az autodatum helyett autodate-et írtam :)

autodate.module

<?php
function autodate_field_info() {
  return array(    
    'autodate_field' => array(
      'label' => t('Autodátum'),
      'description' => t('Automatikus dátum.'),
      'default_widget' => 'autodate_auto',
      'default_formatter' => 'autodate_show',
    ),
  );
}
function autodate_field_widget_info() {
  return array(
    'autodate_auto' => array(
      'label' => t('Dátum mező'),
      'field types' => array('autodate_field'),
    ),
  );
}
 
function autodate_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
 
  $widget = $element;
  $widget['#delta'] = $delta;
 
  switch ($instance['widget']['type']) {
    case 'autodate_auto':
      $widget += array(
        '#type' => 'hidden',
        '#value' => time(),        
      );
      break;   
  }
 
  $element['autodatum'] = $widget;
  return $element;
}
 
function autodate_field_is_empty($item, $field) {
  if (empty($item['autodatum']) && (string) $item['autodatum'] !== '0') {
    return TRUE;
  }
  return FALSE;
}

Köszönöm a rávezetést.

0
0

...mit tudok: http://web.termuves.hu

nevergone képe

A teljes kód átnézése nélkül csak egy sort emelnék ki:

'label' => t('Autodátum'),

Ez nagyon rossz, a t() függvény ugyanis mindig angolról fordít valamire. („$string: A string containing the English string to translate.”)

Szóval vagy angolul írod oda a szöveget, használod a t() függvényt, és így lesz egy fordítható megoldásod, vagy simán magyarul, a t() függvény nélkül. Ez utóbbi esetben a szöveg nem jelenik meg fordíthatóan a Drupal rendszerben.

3
0
eMeLA képe

Jogos az észrevétel.
(öröklődött a példakódból :)

0
0

...mit tudok: http://web.termuves.hu