在Salesforce中,你可以通过自定义JavaScript按钮或链接来触发Apex代码的执行。这可以通过使用JavaScript Remoting或Visualforce页面来实现。以下是一些步骤来将JavaScript按钮与Apex代码链接起来:
使用JavaScript Remoting链接JavaScript按钮到Apex代码:
- 创建Apex类:首先,创建一个Apex类,其中包含你要执行的Apex代码。这个Apex类需要使用
@RemoteAction
注解来标记方法,以便从JavaScript中调用它。
public class MyApexController {
@RemoteAction
public static String executeApexCode() {
// 在这里编写你的Apex代码
// 返回任何结果
return 'Apex code executed successfully';
}
}
- 创建JavaScript按钮:在对象的设置中,创建一个自定义JavaScript按钮。在按钮的JavaScript代码中,使用JavaScript Remoting来调用Apex代码。下面是一个示例按钮的代码:
{!REQUIRESCRIPT("/soap/ajax/41.0/connection.js")}
{!REQUIRESCRIPT("/soap/ajax/41.0/apex.js")}
var result = sforce.apex.execute("MyApexController", "executeApexCode", {});
// 处理Apex代码执行的结果
alert(result);
- 关联按钮:将这个JavaScript按钮与你的对象相关联,以便在记录详情页上显示它。
使用Visualforce页面链接JavaScript按钮到Apex代码:
- 创建Visualforce页面:创建一个Visualforce页面,其中包含你的JavaScript按钮。在Visualforce页面中,你可以使用
<apex:page>
标签的standardController
属性指定对象,然后在页面中包含JavaScript按钮。
<apex:page standardController="Your_Object__c">
<script>
function executeApexCode() {
Visualforce.remoting.Manager.invokeAction(
'{!$RemoteAction.MyApexController.executeApexCode}',
function(result, event) {
if (event.status) {
// 处理Apex代码执行的结果
alert(result);
} else {
// 处理错误
alert('Error: ' + event.message);
}
}
);
}
</script>
<button onclick="executeApexCode();">Execute Apex Code</button>
</apex:page>
- 关联Visualforce页面:在对象的设置中,创建一个新的JavaScript按钮或链接,然后将其链接到上面创建的Visualforce页面。
这些步骤将使你能够通过JavaScript按钮或链接执行Apex代码。确保在Apex代码中包含所需的逻辑,并根据需要处理结果。同时,确保在按钮或链接的可见性和访问控制方面进行适当的设置,以确保只有授权的用户可以执行Apex代码。
Calling a Lightning component from a Classic custom button involves a slightly different approach than doing it in Lightning Experience. Here’s how you can achieve this:
-
Create a Visualforce Page:
To bridge the gap between Classic and Lightning components, you can create a Visualforce page that contains your Lightning component.
- Go to “Setup.”
- In the Quick Find box, enter “Visualforce Pages” and select it.
- Click “New” to create a new Visualforce page.
Here’s an example of what the Visualforce page might look like:
<apex:page > <apex:includeLightning /> <div id="lightning-component-container"></div> <script> $Lightning.use("c:YourApp", function() { $Lightning.createComponent( "c:YourLightningComponent", {}, "lightning-component-container", function(component) {} ); }); </script> </apex:page>
- In this example, replace
"c:YourApp"
with the name of your Lightning app (if applicable) and"c:YourLightningComponent"
with the name of your Lightning component.
-
Create a Custom Button in Classic:
- Navigate to the object (e.g., Account, Contact) for which you want to add the custom button.
- In the object’s page, go to the “Buttons, Links, and Actions” section and click “New Button or Link.”
-
Choose Button Behavior:
- Select “Visualforce Page” as the content source.
- Choose the Visualforce page you created in step 1 from the dropdown list.
-
Configure Button Properties:
- Give your button a name.
- Optionally, specify a label for the custom button that will appear on the object’s page layout.
- Configure other properties as needed, such as behavior and display options.
-
Add the Button to Page Layout:
- Save the custom button.
- After saving, add the button to the desired page layout. You can do this by editing the page layout for the object and dragging the button from the “Mobile & Lightning Actions” section to the “Salesforce Classic Actions” section.
-
Test the Custom Button:
- Save the page layout.
- Go to the record detail page for the object you modified in Classic.
- You should see your custom button (with the label you specified) on the page.
- Click the button to execute the Visualforce page, which in turn will load your Lightning component.
This approach leverages a Visualforce page as a bridge between Classic and Lightning components. When the custom button is clicked, it loads the Visualforce page, which then embeds and initializes your Lightning component.