Рейтинг:0

Использовать hook_entity_presave для преобразования нескольких строк в поле в отдельные значения в поле с несколькими значениями?

флаг cn

У меня есть поле, определенное как «длинный текст», которое допускает бесконечное количество значений. Сложность в том, что пользователи вводят все за одну итерацию поля.Итак, мне нужно получить значение, которое они ввели, взорвать его и создать отдельные записи поля с несколькими значениями. Но... мой подход не работает:

функция builder2020_entity_presave (EntityInterface $ сущность) {
  переключатель ($entity->bundle()) {
    случай 'ec_topics':
      $count = count($entity->field_ec_subtopics);//проверяем, использовал ли пользователь только одно поле
      if ($count == 1){ //пользователь поместил все в одно значение поля
        $values ​​= array(explode('\n',$entity->field_ec_subtopics->value)); создать массив из значения поля
          $entity->field_subtopics->value = $values; //подаем массив в поле
      }
      $entity->field_sub_topic_count->value = $count; //устанавливаем количество ec_topics
      сломать;

Я «думаю», что я близок, но я не могу понять, куда я падаю.

флаг cn
См. https://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.single.
gmak avatar
флаг cn
@Clive Я понимаю, что вы предлагаете, что «\ n» не будет найдено в операторе взрыва (), и что я должен использовать «\ n». Однако, когда я это делаю, я все равно не получаю ожидаемого результата. В любом случае кажется, что взорвать () не работает.
gmak avatar
флаг cn
Я понимаю, что неправильно понял «косую черту» в комментарии выше. Они верны в моем коде.
Рейтинг:0
флаг cn
случай 'ec_topics':
      $count = count($entity->field_ec_subtopics);
      если ($ count == 1){
        $values ​​= $entity->field_ec_subtopics->getValue();
        $content = $values[0]['value'];
        $items = взорвать(PHP_EOL,$content);
        $ количество = количество ($ предметов);
        $entity->field_ec_subtopics = $items;
      }
      $entity->field_sub_topic_count->value = $count;
      сломать;

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.