Score:-2

InvalidArgumentException: คลาส ... ไม่มีอยู่ในฟอร์มการกำหนดค่าแบบกำหนดเอง

ธง id

ฉันสร้างแบบฟอร์มการกำหนดค่า เพื่อให้ฉันสามารถตั้งค่าคีย์ API แบบไดนามิกสำหรับโมดูลสภาพอากาศที่กำหนดเองของฉัน

แต่เมื่อฉันเขียนที่อยู่ url http://drupalsite/admin/config/services/weather/settings ฉันได้รับข้อผิดพลาด:

InvalidArgumentException: ไม่มีคลาส "\Drupal\weather\Form\WeatherSettingsForm" ใน Drupal\Core\DependencyInjection\ClassResolver->getInstanceFromDefinition() (บรรทัดที่ 24 ของ core/lib/Drupal/Core/DependencyInjection/ClassResolver.php)

ฉันตรวจสอบชื่อคลาสและชื่อไฟล์และล้างแคชแล้ว แต่ข้อผิดพลาดไม่หายไป จะแก้ไขได้อย่างไร?

weather.routing.yml

weather.weather_page:                               
  เส้นทาง: '/weather/{city}'
  ค่าเริ่มต้น:                                                       
    _controller: '\Drupal\weather\Controller\WeatherPage::getWeather'                          
  ความต้องการ:                                        
     _permission: 'เข้าถึงเนื้อหา'
สภาพอากาศการตั้งค่า:
  เส้นทาง: '/admin/config/services/weather/settings'
  ค่าเริ่มต้น:
    _form: '\Drupal\weather\Form\WeatherSettingsForm'
    _title: 'แบบฟอร์มการตั้งค่าสภาพอากาศ'
  ความต้องการ:
    _permission: 'จัดการการกำหนดค่าไซต์'

WeatherSettingsForm.php

<?php

namespace Drupal\weather\Form;         

use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;

/**
 * Configure example settings for this site.
 */
class WeatherSettingsForm extends ConfigFormBase {      
  /**
   * {@inheritdoc}
   */
  public function getFormId() {
    return 'weather_admin_settings';
  }

  /**
   * {@inheritdoc}
   */
  protected function getEditableConfigNames() {
    return [
      'weather.settings',
    ];
  }

  /**
   * {@inheritdoc}
   */
  public function buildForm(array $form, FormStateInterface $form_state) {
    $config = $this->config('weather.settings');

    $form['weather_api_key'] = array(
      '#type' => 'textfield',
      '#title' => $this->t('API Key'),
      '#default_value' => $config->get('weather_api_key'),
    );

    return parent::buildForm($form, $form_state);
  }

  /**
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
    $this->configFactory->getEditable('weather.settings')
      ->set('weather_api_key', $form_state->getValue('weather_api_key'))
      ->save();

    parent::submitForm($form, $form_state);
  }
}
?>
cn flag
สมมติว่าชื่อเครื่องของโมดูลของคุณคือ 'สภาพอากาศ' ให้ย้ายคลาสแบบฟอร์มไปที่ 'module_path/src/Form/'
bimsalrobit avatar
id flag
@Clive ขอโทษนะ บางทีฉันไม่เข้าใจคุณ แต่คุณบอกว่าฉันต้องย้ายไฟล์ `WeatherSettingsForm.php` ซึ่งมีคลาส `WeatherSettingsForm` ไปยังโฟลเดอร์ `modules/custom/weather/src/Form` ? แต่มีไฟล์นี้: https://i.postimg.cc/KYqv3NYp/sc.png
Lambic avatar
ph flag
ฉันรันโค้ดตามที่โพสต์และใช้งานได้สำหรับฉัน ดังนั้นคุณอาจพิมพ์ผิดที่ไหนสักแห่งในเครื่อง หรืออาจมีอักขระที่ซ่อนอยู่ในที่ใดที่หนึ่ง
bimsalrobit avatar
id flag
@Lambic คุณใช้ drupal เวอร์ชันใด
Lambic avatar
ph flag
เราอยู่ในเวอร์ชัน 9.1
bimsalrobit avatar
id flag
@Lambic ฉันพบวิธีแก้ปัญหา ฉันต้องรีสตาร์ท docker4drupal
Matoeil avatar
za flag
เพิ่ม $settings['class_loader_auto_detect'] = FALSE; ไปที่ local.settings.php
Score:1
ธง id

สารละลาย:

ฉันแค่ต้องรีสตาร์ทไฟล์ นักเทียบท่า4drupal.

เมื่อฉันเขียนคำสั่ง:

หยุดเขียนนักเทียบท่า
นักเทียบท่าเขียนขึ้น -d

ข้อผิดพลาดหายไป

Kevin avatar
in flag
คุณไม่ได้ล้างแคชหลังจากทำการเปลี่ยนแปลงใช่หรือไม่ การรีสตาร์ทเว็บเซิร์ฟเวอร์นั้น (หายากมาก) สำหรับการพัฒนา
bimsalrobit avatar
id flag
@Kevin ใช่ แน่นอน ฉันล้างแคชหลังจากทำการเปลี่ยนแปลง
Kevin avatar
in flag
มีอย่างอื่นผิดปกติหรือเกิดขึ้นแล้ว เนื่องจากการรีสตาร์ทเซิร์ฟเวอร์เพื่อดูการเปลี่ยนแปลงนั้นไม่ปกติ เว้นแต่คุณจะเปิดใช้งานโมดูล (ลงทะเบียนเส้นทางคลาส) แล้วย้ายไฟล์บางไฟล์ บางครั้งอาจต้องรีสตาร์ทเพื่อล้างแคชพาธของคลาส
ve flag
หายไปครึ่งชั่วโมงกับสิ่งนี้ :( ขอบคุณมากครับ

โพสต์คำตอบ

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