2015-06-16 2 views
2

Зарегистрированный пользователь заполняет форму несколько раз. Из его записей я пытаюсь получить все его материалы для определенного поля и поместить их в массив 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 появляется для отображения пустого массива. Я считаю, что мой поискКритерия так или иначе неверна.

ответ

1

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

+0

Оба работали вместе - фантастический результат. Также можно сделать это с помощью $ current_user-> entry_id; если это кому-то полезно - идентификатор записи формы для пользователя, созданного плагином Gravityformsuserregistration, отличается от идентификатора пользователя. – Steve

+0

Удалено '<=' и изменено только для '<' - оно все еще находит первую запись. – Steve

0

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

Полагая здесь, что форма ID это номер 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; 
     } 

    } 
Смежные вопросы