4 votes

Utiliser httpClient - Guzzle pour le module personnalisé de Drupal 8

Je développe un module personnalisé pour Drupal 8. J'ai deux champs (url et texte html) dans n'importe quel type de noeud. Voici les caractéristiques attendues par le module :

Le module va récupérer la page du "champ url" et copier le code html pour le coller dans le "champ html texte" (ce champ est caché dans la page d'administration). A chaque exécution du cron, le contenu de ce champ sera écrasé.

J'utilise Drupal::httpClient (ou Guzzle) pour effectuer ma requête http.

$client = \Drupal::httpClient();
$request = $client->get('https://github.com/codeafrica/github-africa');
$response = $request->getBody();

C'est mon premier module de développement pour Drupal 8. Pour développer ce module, dois-je créer un client Http personnalisé pour créer mon propre client Http ? Où dans mes répertoires de modules dois-je implémenter les fonctionnalités de copier et coller le code html. Le contrôleur peut-il le faire ?

Voici la structure de mon module personnalisé :

custom_module.info.yml
custom_module.module
custom_module.routing.yml
src/Controller
src/Http  

J'ai besoin de conseils pour commencer. Merci pour votre aide.

0voto

SugarOverflow Points 36

Je suis tombé sur cette question alors que je travaillais sur quelque chose de similaire et je partage donc les deux façons dont j'ai réussi à faire fonctionner ce système.

Je ne sais pas si l'une ou l'autre de ces méthodes est la meilleure :)

Dans mon custom_module.module :

  1. Méthode 1

    $client = new \GuzzleHttp\Client();
    $url = 'yourURL';
    $res = $client->request('GET', $url);
    $res_body = $res->getBody();
  2. ou Méthode 2

    use Guzzle\Http\Client;
    $client = new Client('yourURL');

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X