Атрибут имени формы силы тяжести

Я использую Page Analytics для автоматического сбора данных формы. Gravity Forms создает тег без какого-либо атрибута имени. Я пытаюсь найти способ присвоить тегу формы атрибут имени. Ближе всего к этому я подошел к следующему примеру:

<?php
add_filter("gform_form_tag", "form_tag", 10, 2);
function form_tag($form_tag, $form){
if ($form["id"] == 3){
   $form_tag = preg_replace("|action='(.*?)'|", "action='custom_handler.php'", $form_tag);
   return $form_tag;
   }
}
?>

Но я не уверен, как использовать preg_replace для создания атрибута имени для рассматриваемой формы.


person Jeff Ally    schedule 12.11.2013    source источник
comment
Я нашел решение для себя. Разделить его с любой другой обеспокоенной душой. для меня все, что я хотел, - это добавить атрибут имени для форм, чтобы моя аналитика подбирала что-то понятное вместо идентификаторов, таких как form-1234, поэтому я просмотрел plugin / gravityforms / forms_display.php и отредактировал его там, где он создает новый тег формы. можно найти между строками 435 и 440. создал новую переменную для хранения значения заголовка формы, отредактировал ее, чтобы удалить пробелы. и вставил его в строку тега формы.   -  person Jeff Ally    schedule 22.11.2013


Ответы (3)


Я нашел решение для себя. Разделить его с любой другой обеспокоенной душой. для меня все, что я хотел, - это добавить атрибут имени для форм, чтобы моя аналитика подбирала что-то понятное вместо идентификаторов, таких как form-1234, поэтому я просмотрел plugin / gravityforms / forms_display.php и отредактировал его там, где он создает новый тег формы. можно найти между строками 435 и 440. создал новую переменную для хранения значения заголовка формы, отредактировал ее, чтобы удалить пробелы. и вставил его в строку тега формы.

//Edited For Analytics
        $cm_form_name = str_replace(" ", "-", $form['title']);
        $form_string .= apply_filters("gform_form_tag_{$form_id}", apply_filters("gform_form_tag", "<form method='post' enctype='multipart/form-data' {$target} id='gform_{$form_id}' name='{$cm_form_name}' {$form_css_class} action='{$action}'>", $form), $form);
        //End Editing
        //Orginal String
        //$form_string .= apply_filters("gform_form_tag_{$form_id}", apply_filters("gform_form_tag", "<form method='post' enctype='multipart/form-data' {$target} id='gform_{$form_id}' {$form_css_class} action='{$action}'>", $form), $form);
person Jeff Ally    schedule 22.11.2013

Я написал плагин, который также упрощает добавление атрибута имени (или изменение / добавление / удаление любого другого атрибута для тега формы).

http://gravitywiz.com/gravity-forms-tag-editor/

Вот пример добавления атрибута name:

new GW_Tag_Editor( array(
    'tag'  => 'form',
    'name' => 'form_{formId}',
) );
person Dave from Gravity Wiz    schedule 09.04.2016

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

Он добавляет очищенный атрибут данных имени формы к тегу формы, не затрагивая другие атрибуты.

function add_form_name_data_attr($form_tag, $form){
    $form_tag = str_replace('>', ' data-form-name="' . sanitize_title($form['title']) . '">', $form_tag);

    return $form_tag;
}
add_filter('gform_form_tag', 'add_form_name_data_attr', 10, 2);

Затем я могу использовать этот атрибут данных в JavaScript, чтобы различать различные формы при вызове определенного API аналитики.

person bramchi    schedule 03.10.2018