Custom fields par leur nom

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • Custom fields par leur nom

    Bonjour
    j 4.3 beta 5, php 8.1

    pour récupérer un custom field dans le code je fais actuellement ça :

    Code:
    use Joomla\Component\Fields\Administrator\Helper\FieldsHelper;
    $fields = FieldsHelper::getFields('com_content.categories', $this->category, true);
    
    $nomdufield = $fields[0]->rawvalue ;
    mais il faut avant que je sache que c’est le field 0 (le premier) dans ma base de données
    est ce qu’il y a un moyen d’appeler les fields par leur nom ou au moins par leur vrai Id et non par leur ordre

    Par exemple
    $this->signature = $fields[signature]->rawvalue ;
    Ou
    $signature_id =23;
    $this->signature = $fields[$signature_id]->rawvalue

    merci
    Dernière édition par ekiekieki à 16/03/2023, 10h44

  • #2
    Yep !
    J'ai ce bout de code dans plusieurs de mes présentations, par exemple ici :



    use \Joomla\Component\Fields\Administrator\Helper\Fiel dsHelper; // makes the FieldsHelper available in our override
    $myCustomFields = FieldsHelper::getFields('com_content.article', $this->result); // create a variable which will contain all CF of the current article
    $myCustomFieldsById = \Joomla\Utilities\ArrayHelper:ivot($myCustomFields, 'id'); // we use a pivot on id so that we can easily use the id to access every CF by its ID

    Il suffit d'effectuer le Pivot sur le name plutôt que sûr l'ID :

    $myCustomFieldsByName = \Joomla\Utilities\ArrayHelper:ivot($myCustomFields, 'name');

    (EDIT : désolé, le forum remplace mes double "deux points" par un unique "deux points" suivi d'un emoji qui tire la langue)
    Présentations : slides.woluweb.be | Coordonnées complètes : www.woluweb.be

    Un message d’erreur sur votre site Joomla... ayez le reflexe de consulter la base de connaissance : https://kb.joomla.fr

    Ce forum, vous l'aimez ? Il vous a sauvé la vie ? Vous y apprenez régulièrement ? Alors adhérer à l'AFUJ, l'Association Francophone des Utilisateurs de Joomla : https://www.joomla.fr/association/adherer

    Commentaire


    • #3
      Je vais tester ça
      merci

      Commentaire


      • #4
        Je viens de tester ça marche d’enfer
        comprend pas qu’il y ait pas cet option en natif dans Joomla , fields by name

        merci

        Commentaire


        • #5
          je pense que la raison est que
          - un ID ne change *jamais*
          - par contre, tout qui a accès à l'administration peut changer le Name... auquel cas les overrides ne fonctionnent plus

          Donc l'ID est techniquement la meilleure option.
          Présentations : slides.woluweb.be | Coordonnées complètes : www.woluweb.be

          Un message d’erreur sur votre site Joomla... ayez le reflexe de consulter la base de connaissance : https://kb.joomla.fr

          Ce forum, vous l'aimez ? Il vous a sauvé la vie ? Vous y apprenez régulièrement ? Alors adhérer à l'AFUJ, l'Association Francophone des Utilisateurs de Joomla : https://www.joomla.fr/association/adherer

          Commentaire


          • #6
            Mais justement ce n’est pas l Id non plus c’est l’ordre dans la liste des champs perso , si tu crées le champ en premier ce sera le field[0] même si id = 28

            Commentaire


            • #7
              OK, dans un override d'Article, on a déjà $jcfields qui est dispo et donc le X dans la ligne suivante est bien l'ID du champ :
              Code PHP:
              <?php echo $this->item->jcfields[X]->value?>
              Là, dans ton override, tu pars "de rien".
              Donc, tout comme tu viens de les classer par Name, tu devrais les classer par ID en suivant ci-dessus mon exemple "$myCustomFieldsById"
              Présentations : slides.woluweb.be | Coordonnées complètes : www.woluweb.be

              Un message d’erreur sur votre site Joomla... ayez le reflexe de consulter la base de connaissance : https://kb.joomla.fr

              Ce forum, vous l'aimez ? Il vous a sauvé la vie ? Vous y apprenez régulièrement ? Alors adhérer à l'AFUJ, l'Association Francophone des Utilisateurs de Joomla : https://www.joomla.fr/association/adherer

              Commentaire


              • #8
                Merci bien

                Commentaire


                • #9
                  tres bonne info ce pivot , merci !

                  je le remet au propre pour d'autres passants

                  Code PHP:

                  use Joomla\Component\Fields\Administrator\Helper\FieldsHelper;
                  use 
                  Joomla\Utilities\ArrayHelper;

                  $getFields FieldsHelper::getFields('com_content.categories'$this->categorytrue);
                  //ou
                  $getFields FieldsHelper::getFields('com_content.article'$this->itemtrue);

                  $fields ArrayHelper::pivot($getFields 'name');

                  $this
                  ->myfieldname$fields['myfieldname']->rawvalue ;

                  echo 
                  $this->myfieldname
                  Dernière édition par tradeymag à 29/03/2023, 09h23
                  herve aime ceci.

                  Commentaire

                  Annonce

                  Réduire
                  Aucune annonce pour le moment.

                  Partenaire de l'association

                  Réduire

                  Hébergeur Web PlanetHoster
                  Travaille ...
                  X