gpt4 book ai didi

typo3 - 如何在扩展中使用 TYPO3 Link 向导

转载 作者:行者123 更新时间:2023-12-01 04:41:05 36 4
gpt4 key购买 nike

在扩展中,我希望能够修改现有链接。数据库中的相应字段可能包含多个链接(例如 tt_content.bodytext)。

我想尽可能多地重用现有的功能。所以我想使用已经存在的链接向导。

我找到的是现有路线 rteckeditor_wizard_browse_links使用 rte_ckeditor/Classes/Controller/BrowseLinksController.php .

我在我的 View 助手中使用它:

 $parameters = [
'table' => $table,
'fieldName' => $field,
'pid' => $pid,
'uid' => $uid,
'recordType' => $recordType;
];
$urlParameters = [
'contentsLanguage' => 'en',
// 'route'
// 'token*
'P' => $parameters,
'curUrl' => [
'url' => $url
// todo: add anchor text etc. ...
],
'editorId' => 'cke_1'
];
$route = 'rteckeditor_wizard_browse_links';
return (string)$uriBuilder->buildUriFromRoute($route, $urlParameters);

这确实会正确打开链接向导。但它与ckeditor交织在一起。

当我按下“设置链接”时,没有任何 react ,我收到以下 JavaScript 错误(如果控制台在浏览器中打开,则可见):
RteLinkBrowser.js?bust=8d6016d70f0f490d5e7d24262f0ec96230f399d9:77 Uncaught TypeError: Cannot read property 'document' of null
at Object.LinkBrowser.finalizeFunction (RteLinkBrowser.js?bust=8d6016d70f0f490d5e7d24262f0ec96230f399d9:77)
at HTMLFormElement.UrlLinkHandler.link (UrlLinkHandler.js?bust=8d6016d70f0f490d5e7d24262f0ec96230f399d9:40)
at HTMLFormElement.dispatch (jquery.min-16985e7a97b69d2a9c29e484ac3b581a.js:2)
at HTMLFormElement.y.handle (jquery.min-16985e7a97b69d2a9c29e484ac3b581a.js:2)
LinkBrowser.finalizeFunction @ RteLinkBrowser.js?bust=8d6016d70f0f490d5e7d24262f0ec96230f399d9:77
UrlLinkHandler.link @ UrlLinkHandler.js?bust=8d6016d70f0f490d5e7d24262f0ec96230f399d9:40
dispatch @ jquery.min-16985e7a97b69d2a9c29e484ac3b581a.js:2
y.handle @ jquery.min-16985e7a97b69d2a9c29e484ac3b581a.js:2

RteLinkBrowser.js中的对应行是:
var linkElement = RteLinkBrowser.CKEditor.document.createElement('a');

链接向导希望 ckeditor 窗口打开并使用 DOM 中不存在的东西。

有没有办法直接打开文本字段中特定链接的链接向导?

或者,也可以使用 ckeditor 打开文本字段并预先选择特定链接。

最佳答案

我没有答案,但至少这里有一个解决方法/替代方案:

不要直接打开链接向导,在编辑器中打开字段

作为替代方案,考虑不使用链接向导,而是使用路由“record_edit”打开特定 RTE 字段的编辑对话框。如果双击其中的链接,链接向导将打开。

以下示例取自核心中的 linkvalidator 并进行了修改。它打开一个 tt_content.bodytext 字段的编辑器对话框,用于 uid $uid 的记录。

$requestUri = GeneralUtility::getIndpEnv('REQUEST_URI') .
'&id=' . $pageid;

$uriBuilder = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Routing\UriBuilder::class);
$url = (string)$uriBuilder->buildUriFromRoute('record_edit', [
'edit' => [
'tt_content' => [
$uid => 'edit'
]
],
'columnsOnly' => 'bodytext',
'returnUrl' => $requestUri
]);

enter image description here

更新:对于 TYPO3 9,存在一个 ViewHelper,用于在后端使用 FormEngine 打开字段。这具有相同的结果。

https://docs.typo3.org/other/typo3/view-helper-reference/9.5/en-us/typo3/backend/latest/Link/EditRecord.html

关于typo3 - 如何在扩展中使用 TYPO3 Link 向导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50177304/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com