The following warnings occurred: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Warning [2] Undefined array key "avatartype" - Line: 783 - File: global.php PHP 8.1.31 (Linux)
|
Form Builder / Custom Fields - Show a Field on every form page? - Printable Version +- Form Tools (https://forums.formtools.org) +-- Forum: Modules / Other (https://forums.formtools.org/forumdisplay.php?fid=8) +--- Forum: Modules (https://forums.formtools.org/forumdisplay.php?fid=16) +--- Thread: Form Builder / Custom Fields - Show a Field on every form page? (/showthread.php?tid=5104) |
Form Builder / Custom Fields - Show a Field on every form page? - john-m-adams - Mar 25th, 2015 I've created my second custom field, but I've run into an issue. It's a field I need to add values to with Javascript, it needs to appear on every page (hidden), and it needs to add to the existing data in the field if present. Is there a read-made way to add a field to every tab? Barring that, is there an easy way to find and get $field_info to add the field directly to the Form Page template in a custom Form Builder template? I can't find much documentation on how to access other properties of the form... from what's available, it looks like you only have ready access to the groups/fields assigned to that tab/page when it is called. Alternately, in the Custom Fields "Save" script, is the a variable available with the data in the DB, if the field already held data? Or would I need to use what I get from POST to write a DB query for it? I could just write the input field to the template manually, and combine it with existing data when saving. Thank you, John RE: Form Builder / Custom Fields - Show a Field on every form page? - john-m-adams - Mar 26th, 2015 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. Code: {{foreach from=$view_info.fields item=curr_field}} 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. Code: {{foreach from=$grouped_fields key=k item=curr_group name=row}} EDIT: 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"); 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. Thanks for Form Tools. |