Puncte:0

Utilizați hook_entity_presave pentru a converti mai multe linii dintr-un câmp în valori separate într-un câmp cu mai multe valori?

drapel cn

Am un câmp definit ca „text lung” care permite un număr infinit de valori. Dificultatea este că utilizatorii introduc totul într-o singură iterație a câmpului.Deci, trebuie să obțin valoarea pe care au introdus-o, să o explodez și să creez intrări separate de câmpuri cu mai multe valori. Dar... abordarea mea nu funcționează:

function builder2020_entity_presave(EntityInterface $entity){
  comutați ($entity->bundle()) {
    caz „ec_topics”:
      $count = count($entity->field_ec_subtopics);//verificați dacă utilizatorul a folosit doar un câmp
      dacă ($count == 1){ //utilizatorul a pus totul într-o valoare de câmp
        $valori = array(explode('\n',$entity->field_ec_subtopics->value)); creați matrice din valoarea câmpului
          $entitate->field_subtopics->valoare = $valori; //alimentează matricea în câmp
      }
      $entity->field_sub_topic_count->value = $count; //setează numărul de ec_topics
      pauză;

„Cred” că sunt aproape, dar nu pot să-mi dau seama unde cad.

drapel cn
A se vedea https://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.single
gmak avatar
drapel cn
@Clive Văd ce sugerezi, că „\n” nu va fi găsit în declarația explode() și că ar trebui să folosesc „\n”. Cu toate acestea, când fac asta, încă nu obțin rezultatul pe care îl aștept. Se pare că explode() nu funcționează, în orice caz.
gmak avatar
drapel cn
Îmi dau seama că am greșit prin „slashs” în comentariul de mai sus. Sunt corecte în codul meu.
Puncte:0
drapel cn
caz „ec_topics”:
      $count = count($entity->field_ec_subtopics);
      dacă ($număr == 1){
        $valori = $entity->field_ec_subtopics->getValue();
        $conținut = $valori[0]['valoare'];
        $articole = explode(PHP_EOL,$conținut);
        $număr = număr ($articole);
        $entity->field_ec_subtopics = $articole;
      }
      $entity->field_sub_topic_count->value = $count;
      pauză;

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.