The Form Tools forums are no longer active, but the old posts have been archived here. Please see the Help page on how to get help / report issues.

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Form Builder / Custom Fields - Show a Field on every form page?
Ok, I believe I have come up with a solution. By the way, my custom template set began as a clone of Default Template Set.

Poking around with {{php}} tags, I found {{$view_info}}. {{$view_info.fields}} is an array of every field in the View, whether on the current tab or not.

The field has to be in a group to be in the field list. It also has to be "editable" for the {{edit_custom_field}} call to put it on the page.

So I created a "Universal Hidden Fields" group, and a placeholder for the group ID. I would have preferred group name, but {{$view_info}} doesn't have a full list of the View's groups, only the groups for the current tab.

Note that the only field in my group is a custom field, type="hidden", and this code does not display the group name. If you want a repeating group that is visible on the page, or want to hide repeating core fields, modify accordingly.

I placed this inside the opening <form> tag, just after the {{$published_form_id}} hidden input.

{{foreach from=$view_info.fields item=curr_field}}
  {{if $curr_field.group_id == $P.universal_field_group}}
    {{edit_custom_field form_id=$form_id field_info=$curr_field field_types=$field_types
      settings=$settings submission_id=$submission_id}}

By the original Smarty code of the Page Template from the Default Template Set, the hidden field group would display on whichever tab it was placed. To prevent this, you need to exclude the group ID. Note, I had already restructured this, so that there was only a single {{if $fields|@count}}, with the {{foreach from=$fields item=curr_field}} inside.

{{foreach from=$grouped_fields key=k item=curr_group name=row}}
  {{assign var=group value=$}}
  {{assign var=fields value=$curr_group.fields}}
  {{if $fields|@count > 0 && $group.group_id != $P.universal_field_group}}
    {* Display Start of Group Here *}
    {{foreach from=$fields item=curr_field}}
      {* Display Field Here *}
    {* Display End of Group Here *}


I did miss something. {{$view_info.fields}} does not contain submission values... so in my Custom Field Display Edit code, {{$VALUE}} was empty. With some more prodding, this PHP worked.

PHP Code:
$form_id $this->get_template_vars("FORM_ID");
$submission_id $this->get_template_vars("SUBMISSION_ID");
$field_name $this->get_template_vars("NAME");
$submission_info ft_get_submission_info($form_id,$submission_id);
$value $submission_info[$field_name];

I'm not sure how safe it is to call a core function from a Smarty {{php}} tag, so if anyone knows a better way, please let me know.

Hope this helps someone in the future. Smile
Thanks for Form Tools.

Messages In This Thread
RE: Form Builder / Custom Fields - Show a Field on every form page? - by john-m-adams - Mar 26th, 2015, 11:06 AM

Forum Jump:

Users browsing this thread: 1 Guest(s)