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

Madrid

Group organizers

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: