我有两个自定义对象,约会和会议报告。 会议报告是受聘于一个标准的主从关系的孩子。 另外,我有一个轮廓,学生,已经读创建,编辑,删除有关约会和会议报告没有任何权利。 用例是一个学生可以创建一个约会,但不能查看此任命由教师创建的会话报告。
采用标准布局为约会对象查看约会时按预期工作。 也就是说,不显示学生可以看到约会字段和会议报告的有关名单。 所有其他用户配置文件观察可以看到会议报告的有关名单。
然而,随着Visualforce页面等取代标准布局时,我曾经遇到过一个问题:
<apex:page standardController="Appointment__c">
<apex:sectionHeader title="{!$ObjectType.Appointment__c.label}" subtitle="{!Appointment__c.Name}"/>
<apex:pageBlock title="{!$ObjectType.Appointment__c.label} Detail">
<apex:pageBlockSection showHeader="false" columns="1">
<apex:outputField value="{!Appointment__c.Tutor_Name__c}"/>
<apex:outputField value="{!Appointment__c.Student_Name__c}"/>
</apex:pageBlockSection>
</apex:pageBlock>
<apex:relatedList list="Session_Reports__r"/>
这个新页面按预期工作与为会议报告对象至少阅读权限的所有用户。 学生用户有这个对象没有权利,收到此错误信息
'Session_Reports__r' is not a valid child relationship name for entity Appointment
显然,当页面可以正确显示以不同的配置用户的这种关系确实存在。 我一直无法解决的标准布局,将导致此故障的VF页面之间的差异。 有人建议给我,我可以识别用户个人资料的VF页面,并使用这些信息来切换渲染。 然而,这种类型的做法违背了Salesforce的安全模型的目的,我不会采用这种技术。
我应该能够使用顶点:relatedList以这种方式? 还是我错误地认为,VF渲染引擎可以计算出何时能不能够显示相关列表?