Score:2

ฉันจะส่งคืนอาร์เรย์บิลด์ที่ว่างเปล่าและบันทึกข้อผิดพลาดได้อย่างไร

ธง pe

ฉันใช้รหัสต่อไปนี้สำหรับบล็อก

คลาส WeatherBlock ขยาย BlockBase ใช้ ContainerFactoryPluginInterface {
  
  // รหัสการฉีดการพึ่งพา
  
  ฟังก์ชั่นสาธารณะ getCity () {
    $ip = '193.62.157.66';
    พยายาม {
      $response_ip = $this->httpClient->get('http://ip-api.com/json/' . $ip);
      $response_data_ip = $response_ip->getBody();
      $data_ip = json_decode($response_data_ip);
      ถ้า ($data_ip->สถานะ == 'สำเร็จ') {
        ส่งคืน $data_ip->เมือง;
      }
      อื่น {
        ส่งคืน $this->configFactory->get('sydneypro_weather.settings')->get('weather_city');
      }
    }
    จับ (RequestException $e) {
      กลับ FALSE;
    }
  }

  สร้างฟังก์ชั่นสาธารณะ () {
    $client = $this->httpClient;
    $api_key = $this->configFactory->get('sydneypro_weather.settings')->get('weather_api_key');
    $cid = 'ซิดนีย์โปร_สภาพอากาศ';
    ถ้า (ว่าง ($ api_key)) {
      กลับ [
        '#type' => 'มาร์กอัป',
        '#markup' => $this->t('โปรดป้อนรหัส API ของคุณในแผงการดูแลระบบเพื่อดูสภาพอากาศ'),
      ];
    }
    พยายาม {
      ถ้า ($cache = $this->cacheBackend->get($cid)) {
        $data = $cache->ข้อมูล;
      }
      อื่น {
        $response = $client->get('http://api.openweathermap.org/data/2.5/weather?q=' . $this->getCity() . ',&appid=' . $api_key '&units= เมตริก');
        $response_data = $response->getBody();
        $data = json_decode($response_data);
        $this->cacheBackend->set($cid, $data, $this->time->getRequestTime() + 21600);
      }
      
      $ สร้าง = [
        '#theme' => 'สภาพอากาศบล็อก',
        '#data' => $data,
        '#attached' => [
          'ห้องสมุด' => [
            'ซิดนีย์โปร_สภาพอากาศ/ซิดนีย์โปร_สภาพอากาศ',
          ]
        ]
      ];
      ส่งคืน $build;
    }

    จับ (RequestException $e) {
      กลับ [
        '#markup' => มาร์กอัป::create('<h1>ขออภัย ไม่มีข้อมูล</h1>'),
      ];
    }
  }

}

การกำหนดค่าถูกละเว้นโดยใช้โมดูลละเว้นการกำหนดค่า เมื่อฉันปรับใช้เว็บไซต์กับสภาพแวดล้อมอื่น การกำหนดค่าโมดูล (ซึ่งถูกละเว้น) จะไม่ถูกสร้างในฐานข้อมูลในระหว่างนั้น ซิม. เมื่อการกำหนดค่าหายไป ฉันต้องส่งคืน build array ที่ว่างเปล่าและบันทึกข้อผิดพลาด

ฉันดูหลายตัวอย่างที่มีการเรียกใช้คนตัดไม้ \Drupal::logger(' ')->ข้อผิดพลาด (' ', []);. ฉันไม่เข้าใจว่าฉันจะส่งคืนอาร์เรย์บิลด์ที่ว่างเปล่าและบันทึกข้อผิดพลาดได้อย่างไร และจะแทรกทั้งหมดนี้ในโค้ดได้ที่ไหน

apaderno avatar
us flag
โดยพื้นฐานแล้ว คุณไม่ทราบว่าต้องส่งพารามิเตอร์ใดไปยัง [`\Drupal::logger()`](https://api.drupal.org/api/drupal/core%21lib%21Drupal.php/function/Drupal% 3A%3Alogger/9.3.x) และพารามิเตอร์ที่จะส่งไปยัง [`error()`](https://api.drupal.org/api/drupal/vendor%21psr%21log%21Psr%21Log%21LoggerInterface.php /function/LoggerInterface%3A%3Aerror/9.3.x) วิธีการ คุณไม่เข้าใจอะไรกันแน่? หากไม่มีคำถามที่เจาะจง เราจะพูดในสิ่งที่เอกสารระบุไว้แล้ว
apaderno avatar
us flag
สำหรับ *ฉันไม่เข้าใจว่าฉันจะส่งคืนอาร์เรย์บิลด์ว่างและบันทึกข้อผิดพลาดได้อย่างไร* ก่อนอื่นคุณต้องเรียก `Drupal::logger()->error()` ด้วยพารามิเตอร์ที่ถูกต้อง แล้วจึงส่งคืนอาร์เรย์ว่าง นี่คือวิธีการทำงานของ PHP ไม่ใช่เฉพาะ Drupal

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา