2011-11-24 75 views
4

我已經創建了具有兩個字段的自定義設置對象。我還創建了一個Apex控制器和一個Visual Force Page來更新/編輯自定義設置。作爲系統管理員,我可以使用該表單編輯自定義設置。但是,當我作爲標準用戶登錄時,表單字段沒有顯示出來。當我以標準用戶身份登錄時,即使通過Setup-> Develop-> CustomSettings並單擊manage,我也無法添加自定義設置。我已經使我的控制器和Visual force頁面權限都可以被任何人訪問。標準用戶無法在salesforce中添加/編輯自定義設置記錄

下面是我的控制器代碼,

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; 
    } 
    } 

而下面是我的視覺力量頁面,

<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> 

任何線索?

回答

1

具有「標準用戶」配置文件的用戶無法寫入自定義設置對象。要做到這一點,您需要向用戶授予「自定義應用程序」權限,而這又需要查看安裝程序配置權限,這可能不合需要。

這裏最好的選擇是使用自定義對象來存儲用戶的設置。

在另一方面:您的電子郵件和URL字段干將是多餘的,你可以只使用{!mySettings.XYZ_Url__c}等,你與輸入字段完成的,爲了更好的格式和字符轉義你可能要考慮使用<apex:outputField value="{!mySettings.XYZ_Url__c}"/>

+0

嘿馬特,謝謝你的回覆。這是一個新的自定義設置對象。所以我認爲現場級別的安全設置不適用?是的,我會嘗試克隆配置文件並更改它。現在在一個開發人員帳戶中。無論如何,這是否會有問題 – tamizhgeek

+0

啊,道歉!開發者帳戶不應該影響它,但另一方面,我從來沒有嘗試寫入自定義設置記錄 - 我懷疑這是不可能的!據我所知,自定義設置的目的是維護與應用程序相關的數據列表,這些應用程序可能不會更改,但您不希望進行硬編碼。 –

+0

@LaceySnr - 不完全;他們服務於雙重目的,其中一個是應用程序全局配置,另一個是用戶特定的偏好(Windows註冊表等)。 – jkraybill

相關問題