Estoy trabajando en la documentación de la API de la entidad aquí: https://drupal.org/developing/api/entity .
La pregunta es demasiado grande para responder en detalle, y depende de si necesita contenido o entidades de configuración. Suponiendo que desea entidades de contenido (almacenadas en la base de datos, pueden ser enviables / revisables / ..., detalles en el enlace anterior), debe hacer algo como esto, la documentación vinculada anteriormente eventualmente cubrirá cada paso, incluidos los tutoriales, en este momento , solo cubre los primeros pasos.
- Proporcione una clase de entidad y agregue las anotaciones necesarias para exponerla como una entidad.
- Proporcione las tablas necesarias, no tiene que cambiar mucho si ya tiene su esquema 7.x, pero desea agregar una columna uuid y posiblemente langcode si su entidad puede tener un idioma / ser traducible. Vea el ejemplo de nodo vinculado en el paso si desea que algunos campos base (propiedades) sean traducibles o revisables, actualmente necesita proporcionar las tablas necesarias usted mismo.
- Proporcione las definiciones de campo base en su método baseFieldDefinitions (). . Tenga en cuenta que la forma en que esto funciona cambiará en https://drupal.org/node/2047229 (de matrices a clases).
- Implemente los métodos necesarios antes / después de Guardar / cargar / Eliminar si tiene una lógica personalizada que debe suceder, por ejemplo, antes de guardar una entidad (como actualizar la marca de tiempo modificada).
- Implemente un controlador de acceso si tiene una lógica de acceso no trivial y anule los métodos checkAccess () y checkCreateAccess () o especifique admin_permission en su anotación si solo tiene un permiso único que permite el acceso completo.
- Se recomienda, aunque no es técnicamente necesario, proporcionar una interfaz para su clase de entidad (por ejemplo, NodeInterface for Node) que incluya métodos útiles (generalmente get / set / isSomething ()) para sus campos base, de modo que pueda escribir sugerencia en la interfaz y obtener autocompletar para esos métodos.
Dependiendo de lo que necesite, también habrá otros pasos, como definir los formularios necesarios, posiblemente un controlador de renderizado, etc., pero probablemente deberían ser preguntas separadas si necesita más información.
Notas:
- Las entidades de configuración son básicamente similares, excepto que necesita usar el controlador de almacenamiento de configuración ( https://drupal.org/node/2119905 lo hará más fácil), no necesita definir esquemas de tabla (obviamente) pero necesita proporcionar un archivo de esquema de configuración, consulte, por ejemplo, los de vocabularios de taxonomía o tipos de nodos.
- Las entidades de contenido no tienen sus campos base definidos como propiedades públicas o protegidas, sino que se administran automáticamente en los valores y propiedades de los campos. Acceda a ellos a través de get () / set () o los métodos mágicos correspondientes. ($ nodo-> título es igual a $ nodo-> get ('título')).
- Ayuda en la documentación allí sería muy bienvenida. He creado un esquema básico para el contenido / estructura que me gustaría tener, así que solo cree una nueva página y comience, por ejemplo, también estoy interesado en tener tutoriales simplificados, para entidades de configuración, ya hay uno aquí que pasará a la documentación de la entidad cuando esté listo: https://drupal.org/node/1809494
- Core tiene una gran cantidad de implementaciones de entidades de contenido, si desea ver ejemplos de trabajo: Nodo, Usuario, Término, Comentario, CustomBlock, ... como explica el artículo vinculado en el paso 1, siempre puede encontrar los tipos de entidad proporcionados por un módulo en el espacio de nombres de la entidad.
- @fago acaba de dar una presentación sobre Entity API en el DrupalCamp Vienna este fin de semana, cubre mucho de lo que escribí aquí y más.