problemas con el field api de d7

Events happening in the community are now at Drupal community events on www.drupal.org.
oskar_calvo's picture

Estoy estudiando las nuevas apis de Drupal, y estoy intentando montar un nuevo field para poder usarlo en los diferentes tipos de contenido o entidades.

El caso es que me he leido, mirado,etc... varios manuales, tutoriales y trabajo con el libro de drupal 7 module development, pero el caso es que a pesar de picar el código no consigo que me aparezca el field en las opciones de campos de los nodos.

mi código

install

<?php

/**
* Implements hook_schema()
*/
function fieldarmy_schema() {
 
$schema = array();

 
$schema['fieldarmy'] = array(
   
'description' => 'This table say what army/role has choose one player.',
     
'fields' => array(
       
'fid' => array(
         
'description' => 'fid is the key.',
         
'type' => 'serial',
         
'unsigned' => TRUE,
         
'not null' => TRUE,
        ),
       
'uid' => array(
         
'description' => 'user id.',
         
'type' => 'int',
         
'not null' => TRUE,
        ),
       
'rid' => array(
         
'description' => 'role id.',
         
'type' => 'int',
         
'not null' => TRUE,
        ),
    ),
   
'primary key' => array('fid'),
  );

  return
$schema;
}
?>

el archivo .module

<?php

/**
* Implementation hook field info
*/
function fieldarmy_field_info(){

  return array (
   
'fieldarmy' => array(
     
'label' => t('field army'),
     
'description' => t('This field let you to choose an army\'s player and
      a role with the same name-string'
),
     
'default_widget'  => 'armyfield_options',
     
'default_formatter' => 'armyfield_default',
    ),
  );
}


/**
* Implentation widget info
*/
function fieldarmy_field_widget_info(){
   return array(
   
'fieldarmy_listado' => array(
     
'label' => t('choose the army'),
     
'field types' => array('fieldarmy'),
     
'behaviors' => array(
       
'multiple values' => FIELD_BEHAVIOR_DEFAULT,
       
'default value' => FIELD_BEHAVIOR_DEFAULT,
      ),
    ),
  );
}


/**
*  Implementation widget form
*/
function fieldarmy_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element){
 
$element = array();

  if(
$instance['widget']['type']= 'fieldarmy_listado'){
   
$elemen['roles'] = array(
     
'#type' => 'select',
     
'#title'  => t('Choose your army'),
     
'#option' => array ('uno','dos','tres'),
     
'#default_value' => NULL,
    );
  }
  return
$element;
}



?>

el .info
name = Field army
description = "This field help to choose armys player and it's armys' role'"
core = 7.x
files[] = fieldarmy.module
files[] = fieldarmy.install
package = GCMS

El módulo lo activo y desactivo desde configuración de módulos sin problemas.

Gracias

Oskar

Comments

A ojo veo que tienes que

jonhattan's picture

A ojo veo que tienes que implementar hook_field_schema() en vez de hook_schema(). También te faltan otros cuantos hooks que no sé si son imprescindibles para que el módulo empiece a hacer algo.

@jonhattan. Muchas gracias,

oskar_calvo's picture

@jonhattan.

Muchas gracias, lo voy a mirar creo que me estaba montando bien las tablas.

Los hooks que me faltan, sino me equivoco son los formatters para definir como se pinta la información guardada.

Gracias

Oskar