IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Récupérer une valeur et sa description d'un sous-champ personnalisé


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 221
    Points : 61
    Points
    61
    Par défaut Récupérer une valeur et sa description d'un sous-champ personnalisé
    Bonjour
    Il me manque que récupérer une valeur pour terminer d'afficher ce que je veux, mais je tourne toujours en rond
    J'ai mis la valeur $article_id = 119 pour que cela fonctionne comment récupérer cette valeur
    DEBUG
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    array(1) {
      ["row0"]=>
      array(2) {
        ["field110"]=>
        string(3) "119"
        ["field112"]=>
        array(1) {
          [0]=>
          string(9) "film_prod"
        }
      }
    }
    int(119)
    int(21)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <?php
     
    foreach ($this->item->jcfields as $field) {
     
        if ('films-pros' === $field->name && 'subform' === $field->type) { 
     
    	$field_value = json_decode($this->item->jcfields[111]->rawvalue, true);
    	echo '<pre>', var_dump($field_value), '</pre>'; // ok	
    	$app = Factory::getApplication();
    	$factory = $app->bootComponent('com_content')->getMVCFactory();    
     
            foreach ($field->subform_rows as $subform_row) {
                foreach ($subform_row as $subField) {
     
                    if ('film-pro-lie' === $subField->fieldname) {
                        	$menuTitle = $subField->value;
     
    			$article_id =  119; // Valur en dur comment la récupérer ?
    			echo '<pre>', var_dump($article_id), '</pre>';
    			$table = $factory->createTable('Article', 'Table'); 
    			$table->load($article_id);
    			$item_catid = $table->catid;
     			echo '<pre>', var_dump($item_catid), '</pre>'; 
     
                        	echo HTMLHelper::link(
                            Route::link("site", "index.php?option=com_content&view=article&id={$article_id}&catid={$item_catid}"),
                           $menuTitle
                        );
                    }
     
                }
            }
     
        }
     
    }
     
    ?>

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 222
    Points
    8 222
    Billets dans le blog
    17
    Par défaut
    Si ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $field_value = json_decode($this->item->jcfields[111]->rawvalue, true);
    echo '<pre>', var_dump($field_value), '</pre>'; // ok
    Donne cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    array(1) {
      ["row0"]=>
      array(2) {
        ["field110"]=>
        string(3) "119"
        ["field112"]=>
        array(1) {
          [0]=>
          string(9) "film_prod"
        }
      }
    }
    Et que tu veux accéder au "119", alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $field_value = json_decode($this->item->jcfields[111]->rawvalue, true);
    $article_id = $field_value['row0']['field110']; // 119
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 221
    Points : 61
    Points
    61
    Par défaut
    Bonjour
    Super
    Merci
    J'ai presque fini.
    je cherche maintenant à récupérer la valeur du sous champ string(8) "film_rea" et la mettre dans mon url.
    Je pensais avoir compris comment pointer, j'ai fais différents essais dont
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $field_value['row0']['field112'])[0]
    sans succès

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <?php
     
    foreach ($this->item->jcfields as $field) {
     
        if ('films-pros' === $field->name && 'subform' === $field->type) { 
     
    	$field_value = json_decode($this->item->jcfields[111]->rawvalue, true);
    	echo '<pre>', var_dump($field_value), '</pre>'; // ok	
    	$app = Factory::getApplication();
    	$factory = $app->bootComponent('com_content')->getMVCFactory();    
     
            foreach ($field->subform_rows as $subform_row) {
                foreach ($subform_row as $subField) {
     
                    if ('film-pro-lie' === $subField->fieldname) {
                        	$menuTitle = $subField->value;
     
    			$article_id = $field_value['row0']['field110']; 
    			//OK echo '<pre>', var_dump($article_id), '</pre>';$field_value['row0']['field112']
    			$table = $factory->createTable('Article', 'Table'); 
    			$table->load($article_id);
    			$item_catid = $table->catid;
     			echo '<pre>', var_dump($field_value['row0']['field112'])[0], '</pre>'; 
     
                        	echo HTMLHelper::link(
                            Route::link("site", "index.php?option=com_content&view=article&id={$article_id}&catid={$item_catid}"),
                           $menuTitle  ." " 
                        );
                    }
     
                }
            }
     
        }
     
    }
     
    ?>
    DEBUG
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    array(1) {
      ["row0"]=>
      array(2) {
        ["field110"]=>
        string(3) "119"
        ["field112"]=>
        array(1) {
          [0]=>
          string(8) "film_rea"
        }
      }
    }
    array(1) {
      [0]=>
      string(8) "film_rea"
    }

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 222
    Points
    8 222
    Billets dans le blog
    17
    Par défaut
    Si $field_value vaut ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    array(1) {
      ["row0"]=>
      array(2) {
        ["field110"]=>
        string(3) "119"
        ["field112"]=>
        array(1) {
          [0]=>
          string(8) "film_rea"
        }
      }
    }
    Alors pour accéder à la valeur "film_rea" il faut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $film_rea = $field_value['row0']['field112'][0];
    (Dans ta tentative il y avait une ) qui trainait)
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 221
    Points : 61
    Points
    61
    Par défaut
    Encore merci
    Je récupère bien la valeur, mais je n'arrive pas à trouver la description correspondante.
    C'est un champ personnalisé checkbox de joomla et je cherche à récupérer le terme "réalisation" (voir image)
    Décidément j'ai bien du mal :-(
    Je ne pense pas que tu puisses m'aider, peut-être qu'un dev joomla pourrait me répondre ici (pas vraiment eu de réponse sur le forum principal)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <?php
    	echo "<br /><b><span><i class='fa fa-link fa-1x' aria-hidden='true'></i></span> Pros des film :</b>";      
     
    	foreach ($this->item->jcfields as $field) {
     
    	    if ('films-pros' === $field->name && 'subform' === $field->type) { 
     
    		$field_value = json_decode($this->item->jcfields[111]->rawvalue, true);
    		echo '<pre>', var_dump($field_value), '</pre>'; // ok	
    		$app = Factory::getApplication();
    		$factory = $app->bootComponent('com_content')->getMVCFactory();    
     
    		foreach ($field->subform_rows as $subform_row) {
    		    foreach ($subform_row as $subField) {
     
    		        if ('film-pro-lie' === $subField->fieldname) {
    		            	$menuTitle = $subField->value;				 
     
    				$article_id = $field_value['row0']['field110']; 
    				//OK echo '<pre>', var_dump($article_id), '</pre>';$field_value['row0']['field112']
    				$table = $factory->createTable('Article', 'Table'); 
    				$table->load($article_id);
    				$item_catid = $table->catid;
    				$film_type_pro = $field_value['row0']['field112'][0];
    				echo '<pre>', var_dump($film_type_pro), '</pre>';				
     
    		            	echo HTMLHelper::link(
    		                Route::link("site", "index.php?option=com_content&view=article&id={$article_id}&catid={$item_catid}"),
    		               $menuTitle  ." " 
    		            );
    		        }
     
    		    }
    		}
     
    	    }
     
    	} 
    	?>
    DEBUG
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    array(1) {
      ["row0"]=>
      array(2) {
        ["field110"]=>
        string(3) "119"
        ["field112"]=>
        array(1) {
          [0]=>
          string(8) "film_rea"
        }
      }
    }
    string(8) "film_rea"
    Nom : Capture d’écran du 2023-06-16 15-54-18.png
Affichages : 98
Taille : 16,1 Ko

Discussions similaires

  1. [XSL]récupérer une valeur de plusieurs fichiers XML
    Par snoop dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 05/02/2006, 00h32
  2. Réponses: 5
    Dernier message: 09/09/2005, 17h51
  3. problème pour récupérer une valeur dans ma bd (débutante)
    Par auryn111 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 26/08/2005, 17h49
  4. Réponses: 2
    Dernier message: 17/06/2005, 13h38
  5. Réponses: 2
    Dernier message: 11/12/2004, 21h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo