传递参数表单PHP HTML表单

时间:2014-07-07 06:30:30

标签: php html wordpress parameter-passing gravity-forms-plugin

我正在使用WordPress& Gravity Forms plugin并且我正在尝试使用以下代码将参数从第三方提供商传递到Gravity Form Dynamic Population,并使用以下代码

<form method="post" name="goToForm" action="http://www.example.com/?page_id=123"> <input type="hidden" name="param" value="Hello"> <input type="submit" name="fromSubmit" value="Submit"> </form>

请注意,上述http://www.example.com/?page_id=123Gravity Form网址。

我找到的最接近的解决方案是使用HOOK方法,但我仍然想知道如何使用post中的HOOK方法调用在functions.php中创建的自定义函数并传递参数。

任何建议都将受到赞赏

1 个答案:

答案 0 :(得分:2)

如果我正确理解你,你想传递表格网址上的参数?

您可以通过两种方式完成此任务:

网址:http://www.example.com/?page_id=123

  1. 您可以在表单中添加隐藏字段。在该字段的高级部分中,选择“允许”字段以动态填充并添加参数名称。所以我想得到page_id:
  2. enter image description here

    保存表单后,检查隐藏字段,您应该将其值视为123

    1. 您可以添加钩子功能:

      add_filter('gform_field_value_page_id', 'my_custom_population_function'); function my_custom_population_function($value){ return $value'; //or do what ever you want with it }

    2. 如果您想自动将页面标题或ID添加到表单:

      1. 添加隐藏字段,在该字段的高级部分中,将此{embed_post:ID}(帖子ID)添加到默认值。 OR

      2. 添加隐藏字段,在字段的高级部分中,将此{embed_post:post_title}(帖子标题)添加到默认值。

      3. 修改

        用户正在寻找http://www.gravityhelp.com/documentation/page/Gform_after_submission

        您可以从表单中获取字段/参数,然后将其保存到数据库,更新Wordpress页面/帖子或将其发送给第三方服务提供商。

        我不太确定用户想要对参数做什么,因此我将展示将其发送给第三方提供商的示例:

        • 我们需要输入字段编号,以便我们可以获得正确的字段:

          /* Getting correct field numbers */
          
          
          add_action("gform_after_submission", "post_to_third_party", 10, 2);
          
          function post_to_third_party($entry, $form){
              // Lets get the IDs of the relevant fields and prepare an email message
              $message = print_r($entry, true);
              // In case any of our lines are larger than 70 characters, we should use wordwrap()
              $message = wordwrap($message, 70);
              // Send
              mail('you@domain.com', 'Getting the Gravity Form Field IDs', $message);
          } 
          

        你应该在邮件中得到这样的东西:

        Array
            (
                [id] => 64
                [form_id] => 5
                [date_created] => 2014-07-02 13:27:00
                [is_starred] => 0
                [is_read] => 0
                [ip] => ::1
                [source_url] => http://localhost/
                [post_id] =>
                [currency] => USD
                [payment_status] =>
                [payment_date] =>
                [transaction_id] =>
                [payment_amount] =>
                [payment_method] =>
                [is_fulfilled] =>
                [created_by] => 1
                [transaction_type] =>
                [user_agent] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3)
            AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153
            Safari/537.36
                [status] => active
                [1] => Name
                [4] => Parameter
            )
        

        其中[1] => Name是名称字段,我输入了名称进行测试,[4] => Parameter是参数字段,默认值为参数。

        • 在我们获得正确的字段编号后,我们可以将其提交给第三方提供商,我在此示例中使用curl:

          //Submitting to thirdparty.com using curl
          function post_to_url($url, $data) {
               $fields = '';
               foreach($data as $key => $value) {
               $fields .= $key . '=' . $value . '&';
               }
               rtrim($fields, '&');
               $post = curl_init();
               curl_setopt($post, CURLOPT_URL, $url);
               curl_setopt($post, CURLOPT_POST, count($data));
               curl_setopt($post, CURLOPT_POSTFIELDS, $fields);
               curl_setopt($post, CURLOPT_RETURNTRANSFER, 1);
               curl_setopt($post, CURLOPT_HEADER, 1); //if you want headers
               curl_setopt($post, CURLOPT_HEADER, "Content-Type:application/xml");
               $result = curl_exec($post); 
          
               //If there's an error
          
               if($result === false)
                  {
                      echo "Error Number:".curl_errno($ch)."<br>";
                      echo "Error String:".curl_error($ch);
               }
          
               curl_close($post);
          }
          
          if($form["id"] == 1){//Form ID
              //Lets get the fields to match submission to thirdparty.com
              $data = array(
                   "FirstName" =>     $entry["1"],
                   "ParameterName" =>     $entry["4"]
              );
          
                  post_to_url("http://thirdparty.com", $data);
          }
          

        如果您希望钩子适用于特定表单gform_after_submission_1,则仅适用于表单ID 1。