ady1503: Комментарии

Главные вкладки

10 января 2023 в 21:09

Очень хорошо объяснил.

У меня такое же мнение.

Лучше всего вносить изменения и постепенно переходить на версию 10. Многие проекты еще не готовы к версии 9, и спешка до версии 10 создаст хаос для разработчиков.

23 ноября 2022 в 11:10

Добрый.

Я извиняюсь, не хорошо объяснил.

У меня есть поле entity reference, загружаю её через ajax, чтобы получить ID сущность при выборе. Так имею массив, и из этого массива загружаю те поля что мне нужны для логики в форме. Поля загружаются с теми данными с entity reference. Выбераю любую сущность из списка и загрузка работает. Но одно поле string мне нужно её value передать в js. Вот здесь и проблема оно не загружается в js. Ваш пример работает только с переменными что имеет что-то в value а не динамически.

Что-то мне не хватает добавлять.

23 ноября 2022 в 1:44

Привет.

Проверил все возможные варианты.

Но динамическая переменная не передаётся в js.

Объясню:

Всё что загружается с drupal-а работает, скажем user name, node id, user email.

Но переменную с reference field нет.
У меня reference field типа content, и хочу передать имя в js. Но не получается, первая загрузка показывает null. И всегда только null. Данные передаю через field->value. И они передаётся, передал через messenger drupal-а и загрузка идёт в переменную. Только вот в js нет.

В чём фишка?

Что не дочитал.

Спасибо.

22 ноября 2022 в 12:53

Спасибо за ответ.

Но, мне нужно переменная.

Ваш вариант только покажет кек

Мне нужно понять как передать $кек, что изменится.

Спасибо большое

14 ноября 2022 в 12:46

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.

Спасибо.

4 ноября 2022 в 11:54

Спасибо большое. Проверю ещё раз. Эту информацию я видел, но может быть не был внимательный.

Был бы очень благодарен если кто-то выложит пример с динамической формой на две и более полей с if конструкции.

Спасибо.

8 октября 2022 в 10:29
1

Привет.

Вот решение задачи:

Вместо :$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, надо быть осторожным что введёт пользователь и использовать эти функции с осторожностью.

У меня номерные поля так что не волнует.

Спасибо за помощь.

7 октября 2022 в 12:22

Спасибо за ответ.

Тогда вопрос почему мой код не работает с ["#default_value"]? А работает с ["#value"]?

Только при загрузки изменить форму не загружает результат.

Много двойной и непонятной информации.

И это проблема только в простой функции суммы двух номеров. А если логика кода больше сложная что делать.

Спасибо большое.

7 октября 2022 в 10:57

Я вас понял.

Но, мне нравится искать решение всегда.

Понять суть проблемы и её решить.

Это простая сумма двух номеров, но этот же принцип можно и в другом случае использовать.

Хочу понять: the difference between ["#value"] and ["#default_value"]

И как их использовать.

Спасибо.

P. S. Очень нравится примеры, я учусь всегда на примеры. Если кто-то может скинуть ссылки или сам код.

7 октября 2022 в 0:30

Вот и ответ:

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.

И как с этим быть?

Спасибо.

6 октября 2022 в 23:38

Я нашёл что не работает.

Ajax response делает сумму двух номеров, и это видно в форме. Но в $form_state->getValue, поля результат получает ноль 0, после результата ajax суммы.

Но в поле результат в навигатор видно сумма номеров.

Есть идеей?

Спасибо.

6 октября 2022 в 21:34

Нет.

Первое и второе поле емеет тo что я вводил при новой форме и сохранил. И результат тоже точный. Но при изменение формы не загружается результат, а именно ноль. Что странно, потому что поле результат не емеет никакое значение в конфигурации поля.
Спасибо.

6 октября 2022 в 20:49

Простая.

Сумма двух полей и их результат через ajax, о как говорят on the fly. Чтобы был виден сразу результат, а не при сохранение формы.

Всё работает, кроме того что при изменение уже сохренненой формы результат не тот что надо, а именно сумма двух полей а ноль.

Спасибо.

3 октября 2022 в 22:23
1

Я понял мою ошибку.

Спасибо всем за помощь и извините за то что потратил ваше время.

Я просто мешал оба вида ajax в drupal: Traditional AJAX, and the Drupal Form API #ajax api.

И здесь есть очень хорошее объяснения про разницу между ними:

https://drupal.stackexchange.com/questions/281584/ajax-callback-inside-h...

Всё заработало.

Ещё раз спасибо.

3 октября 2022 в 14:08

Я нашёл функцию которую отвечает за это

https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Component%21Util...

Я был прав, при вызове Ajax request генерируется новый ID поля.

Сейчас вопрос как работать с этим?

Спасибо.

3 октября 2022 в 10:59

Я не видел возможности сделать это через javascript. Потому что при первом запуске формы моё поле емеет статус disabled. Она не активная, серая и плюс она не обязательна не require, но после того как делать checkbox в статус 1, поле активируется и становится обязательна require.
И как я понял форма уже создана и для того чтобы менять статусы полей после первого запуска надо использовать ajax.

И самое трудное если поле емеет статус access=false и disabled при первом запуске, трудно через ajax запрос задать ей статусы access=true и enabled.