Json импорт в поле field данных из приложения через модуль service

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

Аватар пользователя sangas sangas 20 декабря 2017 в 3:34

Здравствуйте уважаемые форумчане. Прошу помощи в решении импорта мульти значений в field drupal 7.
Приложение drupalgap при отправке на сайт генерирует следующий json код для field
пример
POST: https://example.ru/?q=drupalgap/node.json
"field_tip_obiavlenia1":{"und":{"value":["","Сдается","Продается"]}},
drupal 7 принимает данные как

  [field_tip_obiavlenia1] => Array
                (
                    [und] => Array
                        (
                            [value] => Array
                                (
                                    [0] =>
                                    [1] => Сдается
                                    [2] => Продается
                                )

                        )

                )

И на уровне drupal 7 выдает ошибку
Сделан не допустимый выбор обратитесь к администратору
Теперь вопрос подскажите как я могу задать программно правильный импорт этих данных в поле field_tip_obiavlenia1?
либо подскажите модуль где можно было данные импорта связать с полем field_tip_obiavlenia1]

Комментарии

Аватар пользователя bumble bumble 20 декабря 2017 в 13:40

Если field_tip_obiavlenia1 это форматированный текст - нужно еще format передавать.
Т.е. должен передаваться массив ['value' => '', 'format' => ''].

Аватар пользователя sangas sangas 20 декабря 2017 в 16:11

Ошибка в том что импорт осуществляется в мульти select Text field через json запрос
При импорте одного значения Запрос проходит без проблем, но мульти значения не проходят выдаёт ошибку.

Аватар пользователя bumble bumble 20 декабря 2017 в 16:19

sangas wrote:

Ошибка в том что импорт осуществляется в мульти select Text field через json запрос

Приведите пример ошибки, так гадать долго будем...

sangas wrote:

И как то нужно задать на уровне drupal 7 соответствие запроса

Задать соответствие запроса чему?

Аватар пользователя sangas sangas 21 декабря 2017 в 1:56

Спасибо за оперативные ответы
Вот json запрос который приложение drupalgap отправляет в drupal 7

POST: https://example.ru/?q=drupalgap/node.json
{"nid":"","title":"Я иду домой","type":"mobilnoeobiavlenie","language":"und","field_adress1":{"und":[{"value":""}]},"field_plochad":{"und":[{"value":""}]},"field_opisanie":{"und":[{"value":""}]},"field_imagephoto":{"und":[{"fid":""},{"fid":""},{"fid":""},{"fid":""},{"fid":""}]},"field_cena7":{"und":[{"value":""}]},"field_thelephone":{"und":[{"value":"7111111111"}]},"field_tip_obiavlenia1":{"und":{"value":["Сдается","Продается"]}}
j

Поле field_tip_obiavlenia1 отправляет два значения Сдается и Продается
Они не передаются
В приложении выводится ошибка
(Тип объявления) - Сделан недопустимый выбор. Пожалуйста, обратитесь к администратору сайта
В самом drupal 7 в журнале выводится следующая запись ошибки

Тип  php
Дата        четверг, 21 декабря, 2017 - 01:43
Пользователь        sangas
Место      https://example.ru/?q=drupalgap/node.json
Источник отсылки https://example.ru/mobile/
Сообщение      Warning: Illegal offset type in isset or empty в функции list_field_validate() (строка 394 в файле /var/www/fastuser/data/www/example.ru/modules/field/modules/list/list.module).
Важность        предупреждение
Имя хоста       *********
Операции       

Я так понимаю выводится данная ошибка потому что в drupal 7 нужно задать соответствие мульти значений, которые передаются из приложения в drupal 7
То есть сейчас это передается в виде

  [field_tip_obiavlenia1] => Array
                (
                    [und] => Array
                        (
                            [value] => Array
                                (
                                    [0] =>
                                    [1] => Сдается
                                    [2] => Продается
                                )
                        )

                )

А должно быть по идее так

 [field_tip_obiavlenia1] => Array
                (
                    [und] => Array
                        (
                            [value] => Array
                                (
                                    [0] =>
                                )
                               [value] => Array
                                (
                                    [1] => Сдается
                                )
                                 [value] => Array
                                (
                                  [2] => Продается
                                )
                        )

                )

Аватар пользователя sangas sangas 21 декабря 2017 в 2:00

Как можно задать чтобы drupal 7 правильной принимал мульти значения
Допустим единичное значение проходит без ошибок
Например json запрос с единичным полем field_tip_obiavlenia1 проходит без проблем

POST: https://example.ru/?q=drupalgap/node.json
{"nid":"","title":"Я иду домой","type":"mobilnoeobiavlenie","language":"und","field_adress1":{"und":[{"value":""}]},"field_plochad":{"und":[{"value":""}]},"field_opisanie":{"und":[{"value":""}]},"field_imagephoto":{"und":[{"fid":""},{"fid":""},{"fid":""},{"fid":""},{"fid":""}]},"field_cena7":{"und":[{"value":""}]},"field_thelephone":{"und":[{"value":"7111111111"}]},"field_tip_obiavlenia1":{"und":[{"value":"Сдается"}]}
j
Аватар пользователя bumble bumble 21 декабря 2017 в 6:41

Ok, а почему не вариант отправлять правильный JSON?

"field_tip_obiavlenia1": {
    "und": [
        {"value": "Сдается"},
        {"value": "Продается"}
    ]
}
Аватар пользователя sangas sangas 21 декабря 2017 в 10:46

Потому что для этого нужно вносить изменение в само приложение drupalgap(не модуль drupalgap)
И легче просто для таких полей использовать hook на уровне drupal 7 чтобы создать соответствие

Аватар пользователя bumble bumble 21 декабря 2017 в 10:54

У меня, к сожалению, пока нет опыта работы с drupalgap. Я не знаком с его API.

Рекомендую почитать документацию по нему. Если он (модуль) предоставляет хуки для работы с препроцессингом входящих запросов - правильно будет сделать это там.

Аватар пользователя sangas sangas 21 декабря 2017 в 12:26

Это лучше сделать на уровне drupal 7 в виде hook так как drupal 7 в целом имеете большое сообщество в России и более проработан и хотелось бы задать эти значения на уровне drupal 7

Аватар пользователя sangas sangas 21 декабря 2017 в 14:02

Возможно вы скажете какой api запрос лучше использовать, чтоб пока попробовать покапать в этом направлении