Puncte:2

Cum returnez o matrice de compilare goală și înregistrez o eroare?

drapel pe

Folosesc următorul cod pentru un bloc.

clasa WeatherBlock extinde BlockBase implementează ContainerFactoryPluginInterface {
  
  // Cod de injectare a dependenței
  
  funcția publică getCity() {
    $ip = '193.62.157.66';
    încerca {
      $response_ip = $this->httpClient->get('http://ip-api.com/json/' . $ip);
      $response_data_ip = $response_ip->getBody();
      $data_ip = json_decode($response_data_ip);
      if ($data_ip->status == 'succes') {
        return $data_ip->city;
      }
      else {
        return $this->configFactory->get('sydneypro_weather.settings')->get('weather_city');
      }
    }
    catch (RequestException $e) {
      returnează FALSE;
    }
  }

  public function build() {
    $client = $this->httpClient;
    $api_key = $this->configFactory->get('sydneypro_weather.settings')->get('weather_api_key');
    $cid = 'sydneypro_weather';
    dacă (gol ($api_key)) {
      întoarcere [
        '#type' => 'markup',
        '#markup' => $this->t('Vă rugăm să introduceți cheia dvs. API în panoul de administrare pentru a vedea vremea'),
      ];
    }
    încerca {
      if ($cache = $this->cacheBackend->get($cid)) {
        $date = $cache->date;
      }
      else {
        $response = $client->get('http://api.openweathermap.org/data/2.5/weather?q=' . $this->getCity() . ',&appid=' . $api_key . '&units= metric');
        $response_data = $răspuns->getBody();
        $date = json_decode($response_data);
        $this->cacheBackend->set($cid, $data, $this->time->getRequestTime() + 21600);
      }
      
      $build = [
        '#theme' => 'bloc_meteorologic',
        '#data' => $date,
        '#attached' => [
          'biblioteca' => [
            „sydneypro_weather/sydneypro_weather”,
          ],
        ],
      ];
      returnează $build;
    }

    catch (RequestException $e) {
      întoarcere [
        '#markup' => Markup::create('<h1>Ne pare rău, nu există date disponibile</h1>'),
      ];
    }
  }

}

Configurația este ignorată folosind modulul Config ignore; când implementez site-ul web într-un alt mediu, configurația modulului (care este ignorată) nu este creată în baza de date în timpul drush cim. Când lipsește configurația, trebuie să returnez o matrice de compilare goală și să înregistrez o eroare.

M-am uitat la câteva exemple în care loggerul este numit folosind \Drupal::logger(' ')->error(' ', []);. Nu înțeleg cum aș putea returna o matrice de compilare goală și să înregistrez o eroare și unde să inserez toate acestea în cod.

apaderno avatar
drapel us
În esență, nu știți ce parametru să transmiteți către [`\Drupal::logger()`](https://api.drupal.org/api/drupal/core%21lib%21Drupal.php/function/Drupal% 3A%3Alogger/9.3.x) și ce parametri să treci la [`error()`](https://api.drupal.org/api/drupal/vendor%21psr%21log%21Psr%21Log%21LoggerInterface.php /function/LoggerInterface%3A%3Aerror/9.3.x). Ce anume nu înțelegi? Fără o întrebare foarte specifică, am spune doar ce spune deja documentația.
apaderno avatar
drapel us
În ceea ce privește *Nu înțeleg cum aș putea returna o matrice de compilare goală și să înregistrezi o eroare*, mai întâi apelezi `Drupal::logger()->error()` cu parametrii potriviți și apoi returnezi o matrice goală. Așa funcționează PHP și nu ceva specific Drupal.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.