Лучше всего вносить изменения и постепенно переходить на версию 10. Многие проекты еще не готовы к версии 9, и спешка до версии 10 создаст хаос для разработчиков.
У меня есть поле entity reference, загружаю её через ajax, чтобы получить ID сущность при выборе. Так имею массив, и из этого массива загружаю те поля что мне нужны для логики в форме. Поля загружаются с теми данными с entity reference. Выбераю любую сущность из списка и загрузка работает. Но одно поле string мне нужно её value передать в js. Вот здесь и проблема оно не загружается в js. Ваш пример работает только с переменными что имеет что-то в value а не динамически.
Всё что загружается с drupal-а работает, скажем user name, node id, user email.
Но переменную с reference field нет.
У меня reference field типа content, и хочу передать имя в js. Но не получается, первая загрузка показывает null. И всегда только null. Данные передаю через field->value. И они передаётся, передал через messenger drupal-а и загрузка идёт в переменную. Только вот в js нет.
Hello Community. It's too much to ask for code examples about: Drupal behaviors a way to attach JavaScript functionality. With variables executed with php from/to javascript. If someone can share specific cases to understand how it works. Thank you very much.
In case someone comes by and wants to know the difference between ["#value"] and ["#default_value"] :
["#default_value"] will set the value when you create the form, if you edit the title your changes are retained.
["#value"] will reset the value any time it's executed. since hook_form_alter is fired at save and when editing your node your changes will be overwritten.
Первое и второе поле емеет тo что я вводил при новой форме и сохранил. И результат тоже точный. Но при изменение формы не загружается результат, а именно ноль. Что странно, потому что поле результат не емеет никакое значение в конфигурации поля.
Спасибо.
Я не видел возможности сделать это через javascript. Потому что при первом запуске формы моё поле емеет статус disabled. Она не активная, серая и плюс она не обязательна не require, но после того как делать checkbox в статус 1, поле активируется и становится обязательна require.
И как я понял форма уже создана и для того чтобы менять статусы полей после первого запуска надо использовать ajax.
И самое трудное если поле емеет статус access=false и disabled при первом запуске, трудно через ajax запрос задать ей статусы access=true и enabled.
Fields to the BaseFieldDefinition.
Никто?
Есть идеи?
Вышел Drupal 10: что нового и почему лучше начать миграцию на новую версию уже сейчас
Очень хорошо объяснил.
У меня такое же мнение.
Лучше всего вносить изменения и постепенно переходить на версию 10. Многие проекты еще не готовы к версии 9, и спешка до версии 10 создаст хаос для разработчиков.
Hook to control node editing.
Thanks.
Спасибо большое.
Drupal behaviors.
Thank you very much.
Works.
Drupal behaviors.
Добрый.
Спасибо большое.
Сейчас проверю.
Хорошого дня вам.
Drupal behaviors.
<?php
Drupal behaviors.
Добрый.
Я извиняюсь, не хорошо объяснил.
У меня есть поле entity reference, загружаю её через ajax, чтобы получить ID сущность при выборе. Так имею массив, и из этого массива загружаю те поля что мне нужны для логики в форме. Поля загружаются с теми данными с entity reference. Выбераю любую сущность из списка и загрузка работает. Но одно поле string мне нужно её value передать в js. Вот здесь и проблема оно не загружается в js. Ваш пример работает только с переменными что имеет что-то в value а не динамически.
Что-то мне не хватает добавлять.
Drupal behaviors.
Привет.
Проверил все возможные варианты.
Но динамическая переменная не передаётся в js.
Объясню:
Всё что загружается с drupal-а работает, скажем user name, node id, user email.
Но переменную с reference field нет.
У меня reference field типа content, и хочу передать имя в js. Но не получается, первая загрузка показывает null. И всегда только null. Данные передаю через field->value. И они передаётся, передал через messenger drupal-а и загрузка идёт в переменную. Только вот в js нет.
В чём фишка?
Что не дочитал.
Спасибо.
Drupal behaviors.
Понял.
Спасибо большое за ваше терпение и время.
Drupal behaviors.
Спасибо.
$form['#attached']['drupalSettings']['lol'] = $kek;
?>
Здесь я понимаю не надо module name?
Вы поставили без, как правильно?
Drupal behaviors.
Спасибо за ответ.
Но, мне нужно переменная.
Ваш вариант только покажет кек
Мне нужно понять как передать $кек, что изменится.
Спасибо большое
Drupal behaviors.
Я извиняюсь но есть у кого-то рабочий пример как из hook_form_alter передать переменную в drupal behaviors?
Спасибо.
Drupal behaviors.
Hello Community. It's too much to ask for code examples about: Drupal behaviors a way to attach JavaScript functionality. With variables executed with php from/to javascript. If someone can share specific cases to understand how it works. Thank you very much.
Спасибо.
Динамичная форма в hook_form_alter.
Привет.
В итоге я решил проблему с реализацией javascript.
Иначе это было невозможно.
Спасибо за информацию и помощь.
Динамичная форма в hook_form_alter.
Спасибо большое. Проверю ещё раз. Эту информацию я видел, но может быть не был внимательный.
Был бы очень благодарен если кто-то выложит пример с динамической формой на две и более полей с if конструкции.
Спасибо.
Математическая функция.
Привет.
Вот решение задачи:
Вместо :$form['field_resultado']['widget'][0]['value']['#value'] = $res;
Ставим:
$values = $form_state->getUserInput();
$values['field_resultado']['0']['value'] = $res;
$form_state->setUserInput($values)->setRebuild();
Как говорят в drupal ducumentation, надо быть осторожным что введёт пользователь и использовать эти функции с осторожностью.
У меня номерные поля так что не волнует.
Спасибо за помощь.
Математическая функция.
Спасибо за ответ.
Тогда вопрос почему мой код не работает с ["#default_value"]? А работает с ["#value"]?
Только при загрузки изменить форму не загружает результат.
Много двойной и непонятной информации.
И это проблема только в простой функции суммы двух номеров. А если логика кода больше сложная что делать.
Спасибо большое.
Математическая функция.
Я вас понял.
Но, мне нравится искать решение всегда.
Понять суть проблемы и её решить.
Это простая сумма двух номеров, но этот же принцип можно и в другом случае использовать.
Хочу понять: the difference between ["#value"] and ["#default_value"]
И как их использовать.
Спасибо.
P. S. Очень нравится примеры, я учусь всегда на примеры. Если кто-то может скинуть ссылки или сам код.
Математическая функция.
Вот и ответ:
In case someone comes by and wants to know the difference between ["#value"] and ["#default_value"] :
["#default_value"] will set the value when you create the form, if you edit the title your changes are retained.
["#value"] will reset the value any time it's executed. since hook_form_alter is fired at save and when editing your node your changes will be overwritten.
И как с этим быть?
Спасибо.
Математическая функция.
Я нашёл что не работает.
Ajax response делает сумму двух номеров, и это видно в форме. Но в $form_state->getValue, поля результат получает ноль 0, после результата ajax суммы.
Но в поле результат в навигатор видно сумма номеров.
Есть идеей?
Спасибо.
Математическая функция.
Нет.
Первое и второе поле емеет тo что я вводил при новой форме и сохранил. И результат тоже точный. Но при изменение формы не загружается результат, а именно ноль. Что странно, потому что поле результат не емеет никакое значение в конфигурации поля.
Спасибо.
Математическая функция.
Простая.
Сумма двух полей и их результат через ajax, о как говорят on the fly. Чтобы был виден сразу результат, а не при сохранение формы.
Всё работает, кроме того что при изменение уже сохренненой формы результат не тот что надо, а именно сумма двух полей а ноль.
Спасибо.
Drupal 9 ajax.
Я понял мою ошибку.
Спасибо всем за помощь и извините за то что потратил ваше время.
Я просто мешал оба вида ajax в drupal: Traditional AJAX, and the Drupal Form API #ajax api.
И здесь есть очень хорошее объяснения про разницу между ними:
https://drupal.stackexchange.com/questions/281584/ajax-callback-inside-h...
Всё заработало.
Ещё раз спасибо.
Drupal 9 ajax.
Я нашёл функцию которую отвечает за это
https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Component%21Util...
Я был прав, при вызове Ajax request генерируется новый ID поля.
Сейчас вопрос как работать с этим?
Спасибо.
Drupal 9 ajax.
Я не видел возможности сделать это через javascript. Потому что при первом запуске формы моё поле емеет статус disabled. Она не активная, серая и плюс она не обязательна не require, но после того как делать checkbox в статус 1, поле активируется и становится обязательна require.
И как я понял форма уже создана и для того чтобы менять статусы полей после первого запуска надо использовать ajax.
И самое трудное если поле емеет статус access=false и disabled при первом запуске, трудно через ajax запрос задать ей статусы access=true и enabled.