Typo3 Fluid:渲染光通量的正确方法是什么:flexform.field.wizard.link?

时间:2013-09-24 09:25:43

标签: typo3 fluid flux viewhelper fedext

我正在使用fedext.net工具集来处理Typo3 6.1和Fluid模板。 我有像这样定义的内容元素后端模板:

{namespace flux=Tx_Flux_ViewHelpers}
{namespace v=Tx_Vhs_ViewHelpers}
<f:layout name="Content" />
<div xmlns="http://www.w3.org/1999/xhtml"
     xmlns:flux="http://fedext.net/ns/flux/ViewHelpers"
     xmlns:v="http://fedext.net/ns/vhs/ViewHelpers"
     xmlns:f="http://fedext.net/ns/fluid/ViewHelpers">

...

<flux:flexform.object name="item">
    <flux:flexform.field.input name="url">
        <flux:flexform.field.wizard.link />
    </flux:flexform.field.input>
</flux:flexform.object>

然后我就像这样在前端渲染它

<f:link.external uri="{section.item.url}">
    {section.item.url}
</f:link.external>

问题是链接后端向导允许用户设置http://www.google.com/ _blank - Google这样的链接,代表href target css-class title,最终会出现在以下前端HTML呈现中:

<a href="http://www.google.com/ _blank - Google">
    http://www.google.com/ _blank - Google
</a>

我想知道是否有任何ViewHelper允许正确呈现链接窗口小部件数据?或者我应该自己实施一个?我已经检查了这些文档:

我坚持第一个,但它比我真正需要的更简单。 可能还有一个ViewHelper可以按空格字符分割链接数据,然后我可以渲染链接但听起来像是不可靠的解决方法。

2 个答案:

答案 0 :(得分:4)

简单的答案是,助焊剂和流体内容本身不为这些提供ViewHelper。

您必须使用外部ViewHelper,例如this one。我将a variant添加到VHS ViewHelper集合扩展中。与流体核心类似,我们在VHS配套扩展中添加了2个新的ViewHelper(v:link.typolink&amp; v:uri.typolink):

安装后,将命名空间导入模板,如下所示:

{namespace v=Tx_Vhs_ViewHelpers}

并在您的模板中使用它:

<v:uri.typolink parameter="{parameter: section.item.url}" />

这应该可以解决问题。

此外,因为这只会渲染由typolink生成的uri,所以vhs中可以使用第二个非常相似的ViewHelper来生成链接:

<v:link.typolink parameter="{parameter: section.item.url}">Beautiful link</v:link.typolink>

感谢kimomat在下面的答案中指出这一点。

答案 1 :(得分:0)

如果我在流体内容主要部分(TYPO3 6.2,VHS 1.9.1,Fluidcontent 4.0.0)中渲染示例,则ViewHelper仅输出链接URL,无链接。

<p><v:uri.typolink configuration="{parameter: '13', additionalParams: '&print=1', title: 'Follow the link'}">Click Me!</v:uri.typolink></p>

此代码将呈现:

<p>/products/?print=1</p>

PageUid 13是产品页面。 我本以期待一个标签。

好的,我明白了。我需要ViewHelper v:link.typolink:

<v:link.typolink configuration="{parameter: '13', additionalParams: '&print=1', title: 'Follow the link'}">Click Me!</v:link.typolink>