Announcement
Collapse
No announcement yet.
Trouble calling customer's custom fields
Collapse
X
-
A lot of times this is because the customer custom fields are 1) Not loaded because they are not expected to be used and 2) the ID for the customer is not loaded as part of the page initialtion. So, in this case, of the customer CREATE page, there wouldn't even be an ID until after the customer created their account.
-
Thank you Lesli! Your code set me down the right path.
I think there is something wrong with Custom Customer Fields, it does not behave the way they are documented in the Miva reference documents.
Here is my solution. I still would be curious if anyone has an explanation why I have to name an output variable and why I have to list the custom fields.
Code:<mvt:item name="customfields" param="Read_Customer_ID(l.settings:customer:id, 'terms, termsPercent, termsDays', g.invoicedCustomer)" /> terms: (&mvte:global:invoicedCustomer:terms;)<br /> termsPercent: (&mvte:global:invoicedCustomer:termsPercent;)<br /> termsDays: (&mvte:global:invoicedCustomer:termsDays;)<br />
Leave a comment:
-
FWIW - I have been battling a version of this demon too. I am not trying to loop the content, I just can't seem to get Custom Customer Fields to carry over to emails from the ACAD page for the life of me. I've even had Developer Support look at it.
[CODE]<mvt:item name="customfields" param="Read_Customer_ID(l.settings:customer:id, 'customer_bricks', g.Customer_fields:customer_bricks)" />
<mvt:if expr="g.Customer_fields:customer_bricks EQ ''">
<mvt:assign name="g.Customer_fields:customer_bricks" value="g.customer_bricks" />
</mvt:if>
<p>Has business a physical location open to the public?: &mvte:global:Customer_fields:customer_bricks;</p>/CODE]
What is so very frustrating is this code works and passed the field along:
Code:<mvt:item name="customfields" param="Read_Customer_ID(l.settings:customer:id, 'business_type', g.Customer_fields:customer_business_type)" /> <mvt:if expr="g.Customer_fields:customer_business_type EQ ''"> <mvt:assign name="g.Customer_fields:customer_business_type" value="g.business_type" /> </mvt:if> <p>Business Type: &mvte:global:Customer_fields:customer_business_type; </p>
Leave a comment:
-
Thank you so much for the replies. I still cannot figure out how to call the custom fields directly via their codes. I tried a million different combinations (including mvt:eval). According to this Miva reference document starting at line 19, the below should work.
Code:<mvt:item name="customfields" param="Read_Customer_ID(l.settings:customer:id, '')" /> code(&mvt:customfields[1]:code;) => value(&mvt:customfields[1]:value;)<br /> code(&mvt:customfields[2]:code;) => value(&mvt:customfields[2]:value;)<br /> code(&mvt:customfields[3]:code;) => value(&mvt:customfields[3]:value;)<br /> <br /> terms: (&mvte:customfields:terms;)<br /> termsPercent: (&mvte:customfields:termsPercent;)<br /> termsDays: (&mvte:customfields:termsDays;)<br />
HTML Code:code(terms) => value(30) code(termsPercent) => value(88) code(termsDays) => value(55) terms: () termsPercent: () termsDays: ()
Leave a comment:
-
Try with &mvt: instead of &mvte:
Or, to check the values of the var in the loop
Code:<mvt:eval expr="l.settings:field:terms" />
Code:Attempt1: Terms(&mvte:customfields[1]:terms;)<br />
Leave a comment:
-
You are using page entities to display your custom fields, that is, anything that starts with &mvt is a page entity.
If you want to access them individually inside the loop, you would use l.settings:field:code, l.settings:field:name, l.settings:field:value -
<mvt:eval expr="l.settings:field:code" />
If you want to access them outside the loop, you'd need to add the array element, such as using this to access the 2nd element in the array, l.settings:customfields[2]:code
<mvt:eval expr="l.settings:field[2]:code" />
In your case above with "Attempt1" you would need to put the element in there, such as:
<mvt:eval expr="l.settings:customfields[1]:terms" />
It's possible that &mvte:customfields[1]:terms; might work but I personally use mvt:eval when I can so I'm not 100% sure.
Leave a comment:
-
Trouble calling customer's custom fields
Can someone help me debug this code. I am able to call the customer's fields and loop through them successfully, but I cannot reference each custom field directly.
Code:<mvt:item name="customfields" param="Read_Customer_ID(l.settings:customer:id, '')" /> <mvt:foreach iterator="field" array="customfields"> Code(&mvte:field:code;)<br/> Name(&mvte:field:name;)<br/> Value(&mvte:field:value;)<br/> </mvt:foreach> Attempt1: Terms(&mvte:customfields:terms;)<br /> Attempt2: Terms(&mvte:global:customfields:terms;)
HTML Code:Code(terms) Name(Terms) Value(30) Code(termsPercent) Name(Terms Percentage) Value(0) Code(termsDays) Name(Terms Days) Value() Attempt1: Terms() Attempt2: Terms()
Tags: None
Leave a comment: