You need to sign in to do that
Don't have an account?
Jose María Nicolás Arfelis
Email template based on two object which doesn't have any relationship and causing error
Hi all,
we have an email template built with Visualforce with "relatedToType="ObjectA__c":
On the other hand, ObjectB was created to store all links the university, our client, has.
For ObjectB these fields were created: Name of Link, URL of Link.
ObjectA and ObjectB have no relationship, means, no Master-Detail and no Lookup.
However, I would like to refer to the field URL of the Link of ObjectB in the email template this way:
I tried using the code above, but it doesn't work.
Even refering to a formula field doesn't work.
I would appreciate your tips as I am struggling hours and hours trying to solve this :(.
we have an email template built with Visualforce with "relatedToType="ObjectA__c":
<messaging:emailTemplate subject="Answer to your Request for Information" recipientType="Contact" relatedToType="ObjectA__c">ObjectA was created to store all Resquests for Informations coming to Salesforce from the university web.
On the other hand, ObjectB was created to store all links the university, our client, has.
For ObjectB these fields were created: Name of Link, URL of Link.
ObjectA and ObjectB have no relationship, means, no Master-Detail and no Lookup.
However, I would like to refer to the field URL of the Link of ObjectB in the email template this way:
<messaging:emailTemplate subject="Answer to your Request for Information" recipientType="Contact" relatedToType="ObjectA__c"> ... <apex:outputLink value="{!IF(ObjectB__r.Name_of_Link__c = 'URL Admission Form', '{!ObjectB__r.URL_of_Link__c}', '')}" id="Admission">Admission Form</apex:outputLink> ...The objective is for future manual changes in the value of the field URL of Link, to do these changes directly in the tab for ObjectB and not in the email template.
I tried using the code above, but it doesn't work.
Even refering to a formula field doesn't work.
I would appreciate your tips as I am struggling hours and hours trying to solve this :(.
As discussed - you are trying to store website URL in the custom object and utilize the those in visualforce email template. I would recomment to use Custom Label to store website URL for different scenario for each email template. And utilize below code in the VF email template.
Sample Code:
{!$Label.AdmissionURL}
{!$Label.RequestForInformationURL}
Please use below like to create new custom label:
https://codecracksblog.wordpress.com/2016/09/11/how-to-create-custom-label/
All Answers
For such scenarios we do the following
1) Create a custom Component (Just for the Object B Part of you email template)
2) This custom Component will have its own controller (Therefore you can build your query to populate the value that you want)
3) Use the custom Component in your vf email template.
This way you can write your custom logic and pull the information from unrelated object.
There is nice example available at the below link for more reference. Hope this helps.
Link: https://developer.salesforce.com/docs/atlas.en-us.pages.meta/pages/pages_email_templates_with_apex.htm
@Prateek, thank you for your answer. I will try to implement it.
My objects don't have any relationship. Do you think, this would work using two objects, which don't have any relationship?
This option works for unrealed objects as well. The only thing that you need to ensure is that in your custom component controller, the query you write for fetching information from the object B returns unique result. Since there is no relationship you will to ensure in your soql that it returns only 1 record as per your use case.
As discussed - you are trying to store website URL in the custom object and utilize the those in visualforce email template. I would recomment to use Custom Label to store website URL for different scenario for each email template. And utilize below code in the VF email template.
Sample Code:
{!$Label.AdmissionURL}
{!$Label.RequestForInformationURL}
Please use below like to create new custom label:
https://codecracksblog.wordpress.com/2016/09/11/how-to-create-custom-label/