Estoy migrando desde la obsoleta api.modifyClass("model:composer", ...).
Mi anulación actual de Composer#save cambia condicionalmente el comportamiento del guardado, pero en otros casos necesita llamar a super.save(opts).
Veo las nuevas APIs addModelMethod / addModelCallback, pero no puedo encontrar un ejemplo en el núcleo que utilice addModelMethod para anular un método existente manteniendo el acceso a la implementación original.
¿Está addModelMethod diseñado para anular métodos de modelo existentes de esta manera? Si es así, ¿cómo debería un plugin delegar a la implementación original de save()?
¿O hay otro punto de extensión que deba utilizarse para este caso de uso de Composer?
Supongo que dependerá de lo que quieras hacer al anular el método save…
Si buscas evitar una guardado basado en alguna condición, podrías usar nuestro transformador de valor composer-service-cannot-submit-postvalue transformer
Si estás haciendo algo una vez que se crea la publicación, está api.onAppEvent("post:created")
Si estás añadiendo un campo, está api.serializeOnCreate
¡Gracias! Ya estoy usando composer-service-cannot-submit-post, que maneja la comprobación a nivel de servicio. Pero el save() del modelo del compositor también comprueba cantSubmitPost, que incluye missingReplyCharacters > 0, por lo que un cuerpo vacío sigue bloqueado ahí.
onAppEvent("post:created") es demasiado tarde porque la publicación nunca se crea, y serializeOnCreate solo añade campos a la solicitud, por lo que no ayuda con la validación de la longitud del cuerpo.
Entonces, el problema restante es saltarse missingReplyCharacters / cantSubmitPost para la primera publicación. ¿Existe un punto de extensión soportado para esto?
Aquí está el inicializador actual para referencia:
¡Gracias, David! Probé el transformador composer-minimum-post-length y funciona: los temas con cuerpos vacíos se crean correctamente.
Una cosa que noté: el editor sigue mostrando “Post can’t be empty” porque la validation en composer-editor tiene una comprobación de replyLength < 1 codificada en duras que no utiliza minimumPostLength.
¿Podría esa comprobación también respetar el transformador, o omitirse cuando minimumPostLength es 0?