替换换行符

Replace line break

在 Fluid Template 和 tx_news 中,我需要用“\n”替换换行符以传递给 JavaScript 函数。

如果 JavaScript 字符串包含换行符,控制台将打印 "Unexpected token."

<a onclick="doSomething('{newsItem.bodytext}');">Click me</a>

如何在这个例子中用“\n”替换换行符?

您可以编写自己的 ViewHelper 并像这样使用它:

{namespace ns=Vendor\ExtensionName\ViewHelpers}

<a onclick="doSomething('{newsItem.bodytext -> ns:viewhelperName()}');">Click me</a>

更多信息在这里:Developing a custom ViewHelper

AS urbantrout 已经写过:你可以在 PHP 中编写自己的 viewhelper。

但您也可以使用 TypoScript-Viewhelper:

<a onclick="doSomething('{newsItem.bodytext -> f:cObject(typoscriptObjectPath: \'lib.nlReplace\')}');">Click me</a>

(因为你在一个字符串中,所以你需要转义内部的')
还有一些 TypoScript,比如

lib.nlReplace = TEXT
lib.nlReplace {
    current = 1
    stdWrap.replacement {
        1 {
            search = #\n#
            replace = \n
            useRegExp = 1
        }
    }
}