Set hidden field value to property from parent document
Hi,
I have a Contour form on which I'd like to include a property from a document which is not the one which the form will be placed on, is this possible?
To give an example, I understand I can use [#PersonName] to get the current person, but how could I get something along the lines of [#Parent.CompanyName]. What I actually need is something more along the lines of Parent.Parent.Parent.CompanyName.
I've seen reference to using a $ prefix for a 'recursive page value' but I'm afraid that I'm not sure what is meant by this.
Not sure about contour but $whatever will recurse until it finds a value so if parent and grandparent do not have value but great grandparent does then it will get that value. Do your parents / grand parents have values? If not then may be it does not work for contour, if not then you may need to create your own field which can do the traversal and set the value.
The $ doesn't seem to work fully in Contour. I had a property with the same name in parent and child, the Contour form is on the child. When referring to it with a $ I successfully got the value from the child element. When renaming the property on the child element so that it effectively no longer existed and it would get the value from the parent, the value of the field became the literal "[$propertyName]"
I created a file ~\umbraco\plugins\umbracoContour\Views\Forms\85514c04-e188-43d0-9246-98b34069750c\CompanyName.cshtml. Where the GUID is that for the specific Contour form I was having issues with, and CompanyName is the field name.
@using Umbraco.Web
@model Umbraco.Forms.Mvc.Models.FieldViewModel
@{
var umbracoHelper = new UmbracoHelper(UmbracoContext.Current);
var companyName = umbracoHelper.AssignedContentItem.Parent.Parent.Parent.Name;
}
<input type="hidden" name="@Model.Name" id="@Model.Id" class="hidden" value="@companyName" />
This will override the markup for any field of the given name on the given Contour form, outputting a hidden field with the value derived from the object model.
Set hidden field value to property from parent document
Hi,
I have a Contour form on which I'd like to include a property from a document which is not the one which the form will be placed on, is this possible?
To give an example, I understand I can use [#PersonName] to get the current person, but how could I get something along the lines of [#Parent.CompanyName]. What I actually need is something more along the lines of Parent.Parent.Parent.CompanyName.
I've seen reference to using a $ prefix for a 'recursive page value' but I'm afraid that I'm not sure what is meant by this.
Regards,
Tim
Tim,
See https://our.umbraco.org/documentation/Reference/Templating/Macros/ thats for getting macro parameters and $ is recursive, it may work so try [$CompanyName]
Not tried it myself!
Regards
Ismail
Hi Ismail,
Thanks for the reply. [$CompanyName] doesn't work, I'd tried that before posting.
In the link you posted it says that the $ is for "any adjacent node of currently executed node". That sounds like a sibling to me, not a parent.
Also to complicate things even more I need a property of the great-grandparent!
Any more ideas?
Tim
Tim,
Not sure about contour but $whatever will recurse until it finds a value so if parent and grandparent do not have value but great grandparent does then it will get that value. Do your parents / grand parents have values? If not then may be it does not work for contour, if not then you may need to create your own field which can do the traversal and set the value.
Regards
Ismail
Hi Ismail,
The $ doesn't seem to work fully in Contour. I had a property with the same name in parent and child, the Contour form is on the child. When referring to it with a $ I successfully got the value from the child element. When renaming the property on the child element so that it effectively no longer existed and it would get the value from the parent, the value of the field became the literal "[$propertyName]"
For anyone else who has this issue in future I eventually sorted it by using custom mark-up as explained here: https://our.umbraco.org/projects/umbraco-pro/contour/documentation/Developer/Custom-Markup/
I created a file ~\umbraco\plugins\umbracoContour\Views\Forms\85514c04-e188-43d0-9246-98b34069750c\CompanyName.cshtml. Where the GUID is that for the specific Contour form I was having issues with, and CompanyName is the field name.
This will override the markup for any field of the given name on the given Contour form, outputting a hidden field with the value derived from the object model.
Tim
is working on a reply...