web-dev-qa-db-fra.com

Comment afficher les valeurs d'un sous-formulaire

J'ai un sous-formulaire dans mon XML, qui fonctionne très bien dans le back-end, mais je ne suis pas sûr du meilleur moyen d'extraire les données du sous-formulaire et de les afficher.

Voici une partie de mon XML original

        <field name= "repeatable_fields_map"
               description= "MOD_ACCREDITATIONS_REPEATABLE_FIELDS_MAP_DESC"
               type= "subform"
               label= "MOD_ACCREDITATIONS_REPEATABLE_FIELDS_MAP_LABEL"
               min= "1"
               max= "1000"
               required= "true"
               formsource= "/modules/mod_accreditations/xml/repeatablefieldsmap.xml"
               multiple= "true"
               buttons= "add,remove"
               layout="joomla.form.field.subform.repeatable"
               groupByFieldset="false"/>

Voici mon sous-formulaire

<?xml version="1.0" encoding="UTF-8"?>
<form>
  <field name="accreditationImage"
         type="media"
         label="MOD_ACCREDITATIONS_REPEATABLE_FIELDS_MAP_ACCREDITATION_IMAGE_LABEL"
         description="MOD_ACCREDITATIONS_REPEATABLE_FIELDS_MAP_ACCREDITATION_IMAGE_DESC"/>
  <field name="accreditationText"
         type="text"
         label="MOD_ACCREDITATIONS_REPEATABLE_FIELDS_MAP_ACCREDITATION_TEXT_LABEL"
         description="MOD_ACCREDITATIONS_REPEATABLE_FIELDS_MAP_ACCREDITATION_TEXTE_DESC"/>
  <field name="link"
         type="url"
         label="MOD_ACCREDITATIONS_REPEATABLE_FIELDS_MAP_LINK_LABEL"
         description="MOD_ACCREDITATIONS_REPEATABLE_FIELDS_MAP_LINK_DESC"/>
</form>

Voici comment je surpasse mon $params

<?php echo "<pre>" . print_r($params, true) . "</pre>"; ?>

Et voici ce qui arrive

Joomla\Registry\Registry Object
(
    [data:protected] => stdClass Object
        (
            [repeatable_fields_map] => stdClass Object
                (
                    [repeatable_fields_map0] => stdClass Object
                        (
                            [accreditationImage] => images/accreditations/some-logo.jpg
                            [accreditationText] => SomeText
                            [link] => http://www.someurl.com
                        )

                )

            [moduleclass_sfx] => 
            [module_tag] => div
            [bootstrap_size] => 0
            [header_tag] => h3
            [header_class] => 
            [style] => 0
        )

    [initialized:protected] => 1
    [separator] => .
)

Je sais que j'ai besoin d'une boucle foreach pour y accéder, mais je sais aussi que je ne peux pas utiliser directement $ params.

J'ai examiné d'autres questions telles que celle-ci: Affiche les valeurs de JFormFieldRepeatable mais il semble qu'ils utilisent attribs. Ce qui me déroute, c'est que je ne vois pas attribs dans le XML. Est-ce une spéciale Joomla! fonctionne ou suis-je un noob?

Autres choses que j'ai lues qui pourraient aider quelqu'un: Comment obtenir de la valeur d'un sous-formulairetilisez les valeurs de champ Joomla Subform dans un champ personnalisé du même moduleComment enregistrer des données depuis type de champ de sous-formulaire dans le champ personnalisé joomla 3.7

2
Eoin
$repeatable_fields_map = (array)$this->params->get('repeatable_fields_map');
foreach($repeatable_fields_map as $item) {
    $accreditationImage = $item->accreditationImage;
    $accreditationText = $item->accreditationText;
    $link = $item->link;
    // do stuff with these variables
}
1
Michael