我创建了一个包含两个字段的自定义设置对象。我还创建了一个 Apex 控制器和一个 Visual Force 页面来更新/编辑自定义设置。作为系统管理员,我可以使用该表单编辑自定义设置。但是当我以标准用户身份登录时,表单字段不会显示。当我以标准用户身份登录时,即使通过“设置”->“开发”->“自定义设置”并单击“管理”,我也无法添加自定义设置。我已将我的控制器和 Visual Force 页面权限设置为可供任何人访问。
下面是我的控制器代码,
public class XYZSettingsController
{
public XYZSettings__c mySettings {get; set;}
public XYZSettings__c myOrgSettings{get; set;}
public XYZSettingsController()
{
mySettings = XYZSettings__c.getValues(System.Userinfo.getUserId());
myOrgSettings = XYZSettings__c.getInstance();
if(mySettings == null)
{
mySettings = new XYZSettings__c(SetupOwnerId=System.Userinfo.getUserId());
}
}
public String getOrgUrl()
{
return myOrgSettings.XYZ_Url__c;
}
public String getOrgEmail()
{
return myOrgSettings.XYZ_Email__c;
}
public String getUrl()
{
return mySettings.XYZ_Url__c;
}
public String getEmail()
{
return mySettings.XYZ_Email__c;
}
public PageReference save() {
if(mySettings.id == null){
upsert mySettings;
}
else{
update mySettings;
}
return null;
}
}
下面是我的 Visual Force 页面,
<apex:page Controller="XYZSettingsController" title="Edit XYZ access settings">
<apex:form >
<apex:pagemessage severity="info" strength="1">
Your default XYZ platform url is: {!OrgUrl} and Email is: {!OrgEmail}
<br></br>
You can override it in the settings below
</apex:pagemessage>
<apex:pageBlock title="Edit XYZ settings" mode="edit">
<apex:commandButton action="{!save}" value="Save"/>
<apex:pageBlockSection columns="2">
<apex:inputField value="{!mySettings.XYZ_Url__c}"/>
<apex:inputField value="{!mySettings.XYZ_Email__c}"/>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
</apex:page>
有什么线索吗?
我刚刚遇到这个问题并在 Salesforce 上回答了它。请参阅我的答案以获取解决方法。 https://salesforce.stackexchange.com/questions/28329/giving-users-access-to-a-specific-custom-setting-without-granting-them-customize/45079#45079
具有“标准用户”配置文件的用户无法写入自定义设置对象。为此,您需要授予用户“自定义应用程序”权限,而这又需要“查看设置配置”权限,这可能是不需要的。
这里最好的选择是使用自定义对象来存储用户的设置。
另一个注意事项:电子邮件和 URL 字段的 getter 是多余的,您可以像处理输入字段一样使用
{!mySettings.XYZ_Url__c}
等,为了更好的格式化和字符转义,您可能需要考虑使用 <apex:outputField value="{!mySettings.XYZ_Url__c}"/>
.