Gravity Forms получают записи полей

Авторизованный пользователь заполняет форму несколько раз. Из его записей я пытаюсь получить все его входные данные для определенного поля и поместить их в массив PHP.

Для простоты предположим, что форма имеет идентификатор 10 с первым полем, называемым SomeField, и пользователь вошел в систему (и все еще вошел в систему) для всех записей.

Вот моя лучшая попытка создать массив всех записей SomeField от пользователя:

get_currentuserinfo();
$searchCriteria = array(
    array(
        'key' => 'created_by',
        'value' => $current_user->user_login
    ),
    array(
        'key' => '1',
        'value' => 'SomeField'
    ),
);

$form = GFAPI::get_entries( 10, $searchCriteria );
echo print_r($form);

К сожалению, этот print_r отображает пустой массив. Я считаю, что мой searchCriteria как-то неверен.


person user23058230    schedule 16.06.2015    source источник


Ответы (2)


Я обнаружил, что проще опустить второй параметр ($searchCriteria) и просто использовать, например, $form[0]['1'], который будет отображать первое поле первой записи указанной формы.

person user23058230    schedule 16.06.2015
comment
Оба работали вместе - фантастический результат. Также можно сделать это с помощью '$current_user-›entry_id;' если это кому-то пригодится - идентификатор записи формы для пользователя, созданный плагином Gravityformsuserregistration, отличается от идентификатора пользователя. - person Steve; 14.11.2016
comment
Удален <= и изменен только для < - он по-прежнему находит первую запись. - person Steve; 14.11.2016

Я нашел с пользователем 23058230 отличное решение во втором ответе. Я всегда создавал последнюю форму, которая хорошо работала для новых регистраций, но не позже.

Предполагая здесь, что идентификатор формы равен номеру 1, вы можете искать его с помощью цикла for, используя entry_id, который доступен в массиве входа пользователя как $current_user->entry_id

Никакого поискового запроса не требуется, кроме формы, которую вы хотите вернуть — в данном случае это форма №1.

Вы можете искать другие элементы, используя ключи, которые вы видите в дампе вашего массива.

Отличное решение, которое с добавлением этого кода решило мою проблему.

$form = GFAPI::get_entries( 1, '');

$what_i_want = 0;

    for( $i = 0; $i < count($form); $i++ ){

        if( $form[$i]['id'] == $current_user->entry_id ){

        // the item I want
        $what_i_want = $form[$i]['22'];

        //echo " I " . $form[$i]['id'] . " F " . $form[$i]['22'] . " i " . $i . " T " . $what_i_want . '<br />';

        break;
        }

    }
person Steve    schedule 14.11.2016