Je suis justement sur une migration repeatable => subform sur un de mes modules.
Au niveau du xml du module en J3, j'avais
En J4, c'est devenu :
avec un fichier mod_cg_imgs.xml qui contient
Facile, non ?
Eh bien, pas tout à fait, car les informations stockées dans la base de données ne sont plus compatibles.
En J3 et en J4, pour récupérer les images, on n'a pas la même structure, donc, 1ere bidouille pour fonctionner dans les 2 versions :
Pour l'instant, j'ai un souci au niveau de l'interface d'admin, car, là aussi, les informations étant stockées différemment, je n'ai pas récupéré mes images J3 dans la version J4 et réciproquement.
Autrement dit, si on veut un seul source J3/J4, il faut que je trouve au niveau du XML la version Joomla pour afficher "repeatable" ou "subform" (car repeatable plante le chargement du xml en J4).
Mais peut-être que tout sera résolu par le PR en cours https://github.com/joomla/joomla-cms/pull/28319
Pascal
Au niveau du xml du module en J3, j'avais
Code:
<field name="slideslist" showon="cg_img_type:files" type="repeatable" label="CG_SLIDE_LIST" description="CG_SLIDE_LIST_DESC" select="CG_SLIDE_LIST"> <fieldset hidden="true" name="slideslist_modal" repeat="true"> <field name="file_name" type="media" default="" label="FILE_NAME" description="FILE_NAME_DESC" preview="tooltip" preview_width="100" preview_height="100"> </field> </fieldset> </field>
Code:
<field name="slideslist" showon="cg_img_type:files" type="subform" multiple ="true" formsource="/modules/mod_cg_parallax/mod_cg_imgs.xml" />
Code:
<?xml version="1.0" encoding="utf-8"?> <form> <fieldset name="slideslist_modal" > <field name="file_name" type="media" default="" label="FILE_NAME" description="FILE_NAME_DESC" preview="tooltip" preview_width="100" preview_height="100"> </field> </fieldset> </form>
Eh bien, pas tout à fait, car les informations stockées dans la base de données ne sont plus compatibles.
En J3 et en J4, pour récupérer les images, on n'a pas la même structure, donc, 1ere bidouille pour fonctionner dans les 2 versions :
Code:
if (is_object($item->slideslist)) { // joomla 4.0 : subform $unearray = []; foreach ($item->slideslist as $uneimage) { $unearray[] = $uneimage->file_name; } } else { // joomla 3.0 : repeatable $imglist = json_decode($item->slideslist); $unearray = $imglist->file_name; }
Autrement dit, si on veut un seul source J3/J4, il faut que je trouve au niveau du XML la version Joomla pour afficher "repeatable" ou "subform" (car repeatable plante le chargement du xml en J4).
Mais peut-être que tout sera résolu par le PR en cours https://github.com/joomla/joomla-cms/pull/28319
Pascal
Commentaire