Puncte:0

Este posibil să se schimbe programatic calea config_sync_directory după instalarea profilului?

drapel cn

Instalarea Drupal 9 folosind o instalare de profil personalizat, am definit "config_sync_directory" în setări.php dosar în $settings matrice pentru a prelua configurația profilului în timpul instalării.

  1. În timpul instalării site-ului, Drupal cere să specifice directorul „config” în fișierul de setări
  2. Într-un profil personalizat am câteva configurații implicite, vreau ca Drupal să citească configurațiile din acel director în timpul instalării, calea pe care am specificat-o în fișierul de setări.
  3. Acum, după instalare, vreau să specific un director de sincronizare de configurare separat și nu vreau să editez fișierul settings.php, din nou și din nou, am vrut doar să actualizez calea directorului de sincronizare dintr-un cârlig din modulul personalizat.

Este posibil să schimbați calea programatic dintr-un cârlig?

leymannx avatar
drapel ne
Puteți edita pur și simplu settings.php de ce ați avea nevoie să fie actualizat dintr-un cârlig?
Prashant Chauhan avatar
drapel cn
Vă rugăm să verificați mai jos motivul pentru care mi-am dorit acest lucru, dar nu pare posibil.
leymannx avatar
drapel ne
Puteți actualiza acea valoare oricând după instalare, doar editând settings.php. Nu văd nicio explicație care să clarifice de ce nu ești în stare să faci asta. Pur și simplu deschideți settings.php în editorul la alegere (poate ștergeți mai întâi permisiunile fișierelor), editați acea valoare, salvați (și poate consolidați din nou permisiunea fișierului). Asigurați-vă că mutați și directorul de configurare în noua locație. Asta e tot.
Prashant Chauhan avatar
drapel cn
@leymannx De fapt, ceea ce am vrut să obțin a fost 1. În timpul instalării site-ului, Drupal cere să specifice directorul „config” în fișierul de setări 2. Într-un profil personalizat am câteva configurații implicite, vreau ca Drupal să citească configurațiile din acel director în timpul instalării, calea pe care am specificat-o în fișierul de setări. 3. Acum, după instalare, vreau să specific un director de sincronizare de configurare separat și nu vreau să editez fișierul settings.php, din nou și din nou, am vrut doar să actualizez calea directorului de sincronizare dintr-un cârlig din modulul personalizat. Sper că am clarificat cerințele.
leymannx avatar
drapel ne
Când instalați un profil, configurația acestuia este citită din directorul de configurare al profilului, indiferent de ceea ce ați configurat în settings.php. Și este foarte important să adaugi asta la întrebarea ta. Altfel nu vei primi răspunsul pe care îl cauți.
Prashant Chauhan avatar
drapel cn
@leymannx Nu este cazul, în timpul instalării citește config din calea de configurare dată în fișierul de setări.
leymannx avatar
drapel ne
Dacă nu funcționează în timpul instalării, atunci ceva nu este în regulă în profilul tău.Verificați directoarele de configurare ale altor profiluri (minimale, standard) unde ar trebui să fie exact configurația.
Puncte:0
drapel us

Modulele pot suprascrie valorile din obiectele de configurare. După cum este descris în Sistem de anulare a configurației / Furnizarea de înlocuiri de la module, un modul trebuie să implementeze un serviciu etichetat config.factory.override. Clasa utilizată pentru serviciu trebuie implementată ConfigFactoryOverrideInterface, așa cum face exemplul dat în documentație.

Servicii:
  config_example.overrider:
    clasa: Drupal\config_example\Config\ConfigExampleOverrides
    Etichete:
      - {nume: config.factory.override, prioritate: 5}
spațiu de nume Drupal\config_example\Config;

utilizați Drupal\Core\Cache\CacheableMetadata;
utilizați Drupal\Core\Config\ConfigFactoryOverrideInterface;
utilizați Drupal\Core\Config\StorageInterface;

/**
 * Exemplu de modificare a configurației.
 */
clasa ConfigExampleOverrides implementează ConfigFactoryOverrideInterface {

  /**
   * {@inheritdoc}
   */
  funcția publică loadOverrides($nume) {
    $overscrie = [];
    if (in_array('system.site', $names)) {
      $overrides['system.site'] = ['name' => 'Numele site-ului înlocuit!'];
    }
    returnează $override;
  }

  /**
   * {@inheritdoc}
   */
  funcția publică getCacheSuffix() {
    returnează „ConfigExampleOverrider”;
  }
  
  /**
   * {@inheritdoc}
   */
  funcția publică getCacheableMetadata($nume) {
    returnează noi CacheableMetadata();
  }

  /**
   * {@inheritdoc}
   */
  funcția publică createConfigObject($nume, $colecție = StorageInterface::DEFAULT_COLLECTION) {
    returnează NULL;
  }

}

Rețineți că valoarea în setări.php fișierul înlocuiește întotdeauna valorile modulului. Pentru ca un modul să seteze o valoare de configurare, setări.php fișierul nu trebuie să-l seteze.

Prashant Chauhan avatar
drapel cn
Cred că ai înțeles greșit întrebarea mea. Definesc calea folderului de sincronizare de configurare în settings.php, care funcționează corect. Acum, după aceea, odată ce Drupal este instalat cu succes, vreau să actualizez această cale a folderului de sincronizare de configurare și nu este o configurație, este o setare.
drapel cn
Nu există niciun cârlig pentru suprascrierea setărilor globale dacă asta vrei să spui. Nu este nevoie de unul, puteți doar să editați settings.php pentru a reflecta noua valoare dorită în loc să editați un cârlig într-un fișier modul
4uk4 avatar
drapel cn
Da, setările sunt numai pentru citire, după proiect. Numai în teste înlocuiesc întreaga instanță singleton. De exemplu [KernelTestBase::setUpFilesystem](https://api.drupal.org/api/drupal/core%21tests%21Drupal%21KernelTests%21KernelTestBase.php/function/KernelTestBase%3A%3AsetUpFilesystem)
Prashant Chauhan avatar
drapel cn
Mulțumesc tuturor pentru clarificări.
Rafael avatar
drapel uz
Cu cli drush config-import --source=SOURCE puteți defini anumite foldere de configurare.

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.