diff --git a/packages/plugins/@nocobase/plugin-public-forms/src/client/components/AdminPublicFormPage.tsx b/packages/plugins/@nocobase/plugin-public-forms/src/client/components/AdminPublicFormPage.tsx
index e0ef14cb01..a9fe6f7ee5 100644
--- a/packages/plugins/@nocobase/plugin-public-forms/src/client/components/AdminPublicFormPage.tsx
+++ b/packages/plugins/@nocobase/plugin-public-forms/src/client/components/AdminPublicFormPage.tsx
@@ -24,6 +24,7 @@ import {
TextAreaWithGlobalScope,
ApplicationContext,
useGlobalVariable,
+ useCompile,
} from '@nocobase/client';
import {
Breadcrumb,
@@ -71,6 +72,7 @@ export function AdminPublicFormPage() {
const { t } = usePublicFormTranslation();
const { theme } = useGlobalTheme();
const apiClient = useAPIClient();
+ const compile = useCompile();
const { token } = AntdTheme.useToken();
const app = useApp();
const environmentCtx = useGlobalVariable('$env');
@@ -150,7 +152,7 @@ export function AdminPublicFormPage() {
title: {t('Public forms', { ns: NAMESPACE })},
},
{
- title: title,
+ title: compile(title),
},
]}
/>
diff --git a/packages/plugins/@nocobase/plugin-public-forms/src/client/components/PublicFormPage.tsx b/packages/plugins/@nocobase/plugin-public-forms/src/client/components/PublicFormPage.tsx
index b3ad843f22..4973888367 100644
--- a/packages/plugins/@nocobase/plugin-public-forms/src/client/components/PublicFormPage.tsx
+++ b/packages/plugins/@nocobase/plugin-public-forms/src/client/components/PublicFormPage.tsx
@@ -28,6 +28,7 @@ import {
useApp,
useRequest,
VariablesProvider,
+ useCompile,
} from '@nocobase/client';
import { Input, Modal, Spin } from 'antd';
import React, { createContext, useContext, useEffect, useMemo, useState } from 'react';
@@ -35,7 +36,6 @@ import { isDesktop } from 'react-device-detect';
import { useParams } from 'react-router';
import { usePublicSubmitActionProps } from '../hooks';
import { UnEnabledFormPlaceholder, UnFoundFormPlaceholder } from './UnEnabledFormPlaceholder';
-
import { Button as MobileButton, Dialog as MobileDialog } from 'antd-mobile';
import { MobileDateTimePicker } from './components/MobileDatePicker';
import { MobilePicker } from './components/MobilePicker';
@@ -83,6 +83,14 @@ function PublicAPIClientProvider({ children }) {
return {children};
}
+function useTitle(data) {
+ const compile = useCompile();
+ useEffect(() => {
+ if (!data) return;
+ document.title = compile(data?.data?.title);
+ }, [data]);
+}
+
export const PublicFormMessageContext = createContext({});
export const PageBackgroundColor = '#f5f5f5';
@@ -174,6 +182,7 @@ function InternalPublicForm() {
);
const [pwd, setPwd] = useState('');
const ctx = useContext(SchemaComponentContext);
+ useTitle(data);
// 设置的移动端 meta
useEffect(() => {
if (!isDesktop) {
diff --git a/packages/plugins/@nocobase/plugin-public-forms/src/server/plugin.ts b/packages/plugins/@nocobase/plugin-public-forms/src/server/plugin.ts
index 6b04a5bac1..f3c45f4487 100644
--- a/packages/plugins/@nocobase/plugin-public-forms/src/server/plugin.ts
+++ b/packages/plugins/@nocobase/plugin-public-forms/src/server/plugin.ts
@@ -73,6 +73,7 @@ export class PluginPublicFormsServer extends Plugin {
const keys = instance.collection.split(':');
const collectionName = keys.pop();
const dataSourceKey = keys.pop() || 'main';
+ const title = instance.get('title');
const schema = await uiSchema.getJsonSchema(filterByTk);
const { getAssociationAppends } = parseAssociationNames(dataSourceKey, collectionName, this.app, schema);
const { appends } = getAssociationAppends();
@@ -94,6 +95,7 @@ export class PluginPublicFormsServer extends Plugin {
},
),
schema,
+ title,
};
}