在迅睿CMS框架中,實現編輯器插入附件時URL標題顯示為附件原名稱是一個常見的需求。本文基于Codeigniter/Laravel/ThinkPHP技術架構,結合PHP開發實踐,提供詳細的技術實現方案。
當用戶在編輯器中選擇附件時,系統應該自動將附件的原始文件名作為URL的標題屬性,而不是顯示默認的"點擊下載"或無意義的文本。
在迅睿CMS中,附件上傳通常通過以下步驟:
// 附件選擇回調函數
function onAttachmentSelected(fileInfo) {
const originalName = fileInfo.original_name;
const fileUrl = fileInfo.url;
// 在編輯器中插入鏈接
editor.insertContent(<a href="${fileUrl}" title="${originalName}">${originalName}</a>);
}
`php
/**
*/
public function getattachmentinfo($id) {
$attachment = $this->db->where('id', $id)->get('attachment')->rowarray();
if ($attachment) {
return [
'originalname' => $attachment['filename'],
'url' => $attachment['filepath'],
'title' => $attachment['filename']
];
}
return null;
}
/**
*/
public function editorinsertattachment() {
$attachmentid = $this->input->post('attachmentid');
$attachmentinfo = $this->getattachmentinfo($attachmentid);
if ($attachmentinfo) {
$html = '' . $attachmentinfo['original_name'] . '';
return $this->success(['html' => $html]);
}
return $this->error('附件不存在');
}`
確保附件表中包含必要的字段:`sql
CREATE TABLE dr<em>attachment (
id int(11) NOT NULL AUTOINCREMENT,
filename varchar(255) NOT NULL COMMENT '原始文件名',
filepath varchar(500) NOT NULL COMMENT '文件存儲路徑',
filesize int(11) NOT NULL COMMENT '文件大小',
fileext varchar(10) NOT NULL COMMENT '文件擴展名',
upload_time int(11) NOT NULL COMMENT '上傳時間',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;`
// 自定義插入附件方法
UE.registerUI('attachment', function(editor, uiName) {
var dialog = new UE.ui.Dialog({
iframeUrl: '/admin/attachment/select',
editor: editor,
name: uiName,
title: '選擇附件'
});
dialog.addEventListener('ready', function() {
// 監聽附件選擇事件
dialog.getDom('attachment').addEventListener('change', function(e) {
var attachmentId = e.target.value;
// 調用后端接口獲取附件信息
fetch('/api/attachment/info?id=' + attachmentId)
.then(response => response.json())
.then(data => {
if (data.code === 1) {
editor.execCommand('insertHtml', data.data.html);
dialog.close();
}
});
});
});
return btn;
});
`php
/**
*/
class Attachmenthook {
public function editorinsert($params) {
$attachmentid = $params['id'];
$attachment = $this->ci->db->where('id', $attachmentid)->get('attachment')->row_array();
if ($attachment) {
return [
'title' => $attachment['filename'],
'url' => $attachment['filepath'],
'html' => '' . $attachment['filename'] . ''
];
}
return false;
}
}`
通過以上技術方案,可以在迅睿CMS中實現編輯器插入附件時自動使用附件原名稱作為URL標題。這種方法不僅提升了用戶體驗,也保持了系統的一致性和可維護性。該方案同樣適用于基于Codeigniter、Laravel、ThinkPHP等其他PHP框架的開發項目。
如若轉載,請注明出處:http://www.www.yaya321.com/product/736.html
更新時間:2025-10-28 03:59:42