En réponse à par Artusamak
Mehdi Jeudi 30 août 2018 - 15:31

Merci pour votre réponse rapide. Voici mon code ci-dessous. Je suis encore débutant en drupal 8, donc si vous pouvez me citer quelques type d'objets pour faire la requête au web service ?!! Ou et comment je peux traiter la réponse de la requête ?


namespace Drupal\baco\Plugin\rest\resource;

use Drupal\rest\Plugin\ResourceBase;
use Drupal\rest\ResourceResponse;
use Drupal\node\Entity\Node;
use Symfony\Component\HttpFoundation\JsonResponse;
use Drupal\headless_drupal\ResponseHelper;
use vendor\Symfony\Component\HttpFoundation;
use vendor\GuzzleHttp\psr7\src;

/**
 * Provides a Demo Resource
 *
 * @RestResource(
 *   id = "baco_resource",
 *   label = @Translation("Baco Resource"),
 *   uri_paths = {
 *     "canonical" = "/baco_rest_api/baco_resource"
 *   }
 * )
 */
 /*list field values ​​for a content type */
class BacoResource extends ResourceBase {

  /**
  * Responds to entity GET requests.
  * @return \Drupal\rest\ResourceResponse
  */

 public function get() {
$url = "http://localhost/bacco/mapage?idfiche=7,8,9,18,77";

/*** A remplacer***/
$arg  = explode('=',$url);
$liste = explode(',',$arg[1]);


foreach ($liste as $key => $value ) {
  if (isset($value) & is_numeric($value) & ($value!=NULL) )
  {

  $query = \Drupal::entityQuery('node')
  ->condition('type','reponse_type')
  ->exists('nid')
  ->condition('nid',$liste,'IN')
  ->condition('status', 1);
  $group = $query->orConditionGroup()
  ->condition('field_question_reponse','%ponse', 'LIKE')
  ->condition('field_question_reponse','Que%','Like')
  ->condition('field_question_reponse','tion','CONTAINS');
  $fiche = $query->condition($group)->execute();
  $nodes = \Drupal::entityTypeManager()->getStorage('node')->loadMultiple($fiche);
}

$json_array=[];
foreach ($nodes as $node) {
  $json_array[$node->get("nid")->value] =  $j_array = array(
    'title' => $node->get("title")->value,
    'Résumé de la fiche' => $node->get("field_resume_de_la_fiche")->value,
    'Lien fiche' => $node->get("field_lien_fiche")->value,
    'Réponse-type' => $node->get("field_reponse_type")->value,
    'Date de publication' => $node->get("field_date_de_publication")->value,
    'Type fiche' => "Réponse Type",
  );


}

return new ResourceResponse($json_array);

}
}
}

Résultat


{
    "7": {
        "title": "fiche1",
        "Résumé de la fiche": "fiche de remboursement",
        "Lien fiche": null,
        "Réponse-type": "fiche de remboursement   uashnkajsh",
        "Date de publication": null,
        "Type fiche": "Réponse Type"
    },
    "8": {
        "title": "fiche 2",
        "Résumé de la fiche": "fiche 2",
        "Lien fiche": null,
        "Réponse-type": "fiche 2 fiche 2fiche 2fiche 2fiche 2fiche 2fiche 2 fiche 2fiche 2 fiche 2fiche 2",
        "Date de publication": "2018-03-30",
        "Type fiche": "Réponse Type"
    },
Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement.
Votre adresse servira à afficher un Gravatar et à vous notifier des réponses. Votre commentaire sera anonymisé si ce billet est dépublié pendant plus de 3 mois.
Pour lutter contre le spam notre système enregistre votre adresse IP et votre adresse e-mail si vous la partagez.
Nous vous invitons à consulter notre politique de confidentialité pour comprendre les traitements faits de ces données et comment les rectifier.