Làm cách nào để hiển thị dữ liệu từ các dạng trọng lực trong mẫu của tôi? [đóng cửa]


21

Lời nói đầu

Tôi đã cài đặt các hình thức trọng lực, tạo một biểu mẫu và người dùng đang gửi dữ liệu đến trang web của tôi. Những gì tôi muốn làm là hiển thị dữ liệu người dùng đang gửi đến trang web của tôi trên một trong các trang của tôi.

Tôi biết có plugin Gravity Forms Directory . Nhưng điều này chỉ cung cấp một trình bày dữ liệu cố định.

Câu hỏi

Có bất cứ điều gì trong các hình thức trọng lực có thể làm một cái gì đó như thế này? (mã giả) :

<?php gforms_get_field( $form_id, $entry_id, 'user_name_field' ); ?>


2
@GhostToast Hãy tin tôi, tôi đã hoàn toàn kết hợp các tài liệu và không có bất kỳ thông tin nào về cách đạt được điều này.
hitautodesturation

1
Lưu ý từ tương lai: đây là một plugin rõ ràng để hiển thị dữ liệu Gravity Forms ở mặt trước: vityview.co
Dalton

2
Tôi cá rằng nếu tôi đăng câu hỏi này lên SO thì họ sẽ bảo tôi đăng nó ở đây :-) Một cái gì đó đã xảy ra với một câu hỏi khác ..
hitautodesturation

Câu trả lời:


25

Bạn có thể xem các tài liệu, nhưng có lẽ cuối cùng bạn sẽ đọc tài liệu thực : mã nguồn.

Nếu bạn làm như vậy, bạn sẽ thấy rằng:

  • GFFormsModel::get_leads($form_id)trả về một danh sách các mục nhập cho một biểu mẫu (có thể bạn đã biết nó rồi), trong đó mỗi mục trong mảng là một mảng, một " đối tượng Entry "
  • GFFormsModel::get_form_meta($form_id)trả về một danh sách các phần tử meta trường (ví dụ mô tả tên, loại, quy tắc, v.v.) trong biểu mẫu, trong đó mỗi mục trong mảng là một " Đối tượng trường "

Khi bạn có một đối tượng Entry, bạn có thể truy cập các trường dưới dạng các phần tử, theo số trường. Nếu bạn cần tìm một trường theo tên hoặc loại, bạn cần lặp lại danh sách các trường trong biểu mẫu để có một trận đấu, sau đó truy cập vào trường của mục nhập theo ID trường.

NB: xác định loại của trường được thực hiện tốt nhất bằng cách chuyển phần tử meta của trường tới GFFormsModel::get_input_type($field)

Chỉnh sửa: cũng lưu ý rằng chỉ 200 ký tự đầu tiên của mỗi trường được trả về trong đối tượng Entry. Nếu bạn có các trường lưu trữ nhiều thông tin hơn, bạn sẽ cần yêu cầu, ví dụ như bằng cách gọi GFFormsModel::get_field_value_long($lead, $field_number, $form).


1
FYI, quản trị viên Gravity Forms đã đăng đoạn trích này cho một đoạn mã ngắn pastebin.com/kHpaHQvi .
hitautodesturation

21

Cảm ơn web biết cho câu trả lời của họ.

Đây là một số bản sao / mì ống cho bất cứ ai tìm kiếm một sự khởi đầu nhanh chóng. Điều này cần một ID mục nhập và lấy khách hàng tiềm năng và hình thức từ đó. Trong trường hợp này, tôi đang sử dụng URL để truyền giá trị. ví dụ: somedomain.com?entry=123.

<?php 
    $lead_id = $_GET['entry'];
    $lead = RGFormsModel::get_lead( $lead_id ); 
    $form = GFFormsModel::get_form_meta( $lead['form_id'] ); 

    $values= array();

    foreach( $form['fields'] as $field ) {

        $values[$field['id']] = array(
            'id'    => $field['id'],
            'label' => $field['label'],
            'value' => $lead[ $field['id'] ],
        );
    }
?>
<pre><?php print_r($values); ?></pre>

1
Mã của bạn rất tuyệt nhưng sẽ không hoạt động Advanced fieldsnhư addresshoặc first name/last namevì họ đang sử dụng .để phân tách ID của họ
RPDeshaies

Cũng sẽ không hoạt động trong chckboxes.
numediaweb

Làm thế nào để có được thông tin người dùng đăng bài?
Giăng

1

Bạn có thể sử dụng một gform_after_submissioncái móc để viết mọi thứ bạn cần vào một loại bài đăng tùy chỉnh, có thể dễ dàng thao tác "ngoài thực địa" hơn và sẽ an toàn khỏi việc giả sử ai đó xóa một trường và xóa sạch tất cả dữ liệu liên quan đến nó .

http://www.gravityhelp.com/documentation/page/Gform_after_submission

Yoast có một bài viết khá hay về cách viết vào các trường tùy chỉnh, thậm chí không sử dụng hook. http://yoast.com/gravity-forms-custom-post-types/

Chúc may mắn!


1
Sao chép dữ liệu như thế này có vẻ hơi khó chịu.
Đêm giao thừa
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.