3

我正在使用 TYPO3 6.2.3 和 TER 的扩展:(flux 7.0.0,fludipages 3.0.0,fluidcontent 4.0.0,VHS 1.8.5)命名空间的正确实现是什么?在流体类型 3 的文档中是 <div

{namespace flux=FluidTYPO3\Flux\ViewHelpers}
{namespace v=Tx_Vhs_ViewHelpers}    
xmlns="http://www.w3.org/1999/xhtml" lang="en"
      xmlns:f="http://typo3.org/ns/fluid/ViewHelpers"
      xmlns:flux="http://typo3.org/ns/flux/ViewHelpers"
      xmlns:v="http://typo3.org/ns/vhs/ViewHelpers">

在其他地方是:

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

<f:layout name="Content" />如果必须在命名空间 div 内部还是外部,我也有点困惑?

4

3 回答 3

4

有两种定义命名空间的方法。第一个是流体自定义样式表示法中的命名空间标记:

{namespace x=Classname}

另一种是命名空间的正式 XML 表示法,因此如果您使用它,它会使您的模板完全符合 XML。

<someTag xmlns:xyz="http://typo3.org/ns/Some/Package/ViewHelpers" />

http://docs.typo3.org/flow/TYPO3FlowDocumentation/TheDefinitiveGuide/PartIII/Templating.html#namespaces

对于TYPO3 CMS,分辨率如下。

  1. 检查settings.namespaces.http://example\.org/url = className,如果匹配,使用这个
  2. 检查 url 是否以 开头http://typo3.org.ns/,然后它之后的所有内容都将被解释为类名
  3. 否则忽略它

欲了解更多信息,请查看示例typo3/sysext/fluid/Tests/Unit/Core/Parser/TemplateParserTest.php

流体检测和解释的 AFAIK 命名空间不会打印到输出中。

于 2014-05-27T21:48:02.463 回答
3

xmlns-defintions 仅用于您的 IDE 来完成代码。将它添加到 div 将在前端呈现它,我不认为你想要那样。

这是我在模板和部分中使用的通用模板。

<?xml version="1.0" encoding="UTF-8" ?>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en"
      xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">

<head>
    <title>Template: Extension Index</title>
    <f:layout name="Default" />
</head>
<body>

{namespace flux=FluidTYPO3\Flux\ViewHelpers}

<f:section name="main">

    // Content
    <f:render partial="Example/Ex" section="main">

</f:section>

</body>
</html>
于 2014-05-26T15:03:51.760 回答
2

问:命名空间的正确实现是什么?
A:我自己也不确定。但在 vhs viewhelpers 的情况下,这个命名空间声明部分适用于我(Typo3 6.2.12,vhs 2.3.2)

{namespace v=FluidTYPO3\vhs\ViewHelpers}

旁注
以下命名空间声明将不起作用,因为它没有使用命名空间表示法(谢谢@kimomat):

{namespace v=Tx_Vhs_ViewHelpers}

另一方面,对于我自己的视图助手的命名空间,我必须使用上面的符号并且它有效

{namespace speciality = Tx_Speciality_ViewHelpers}

作为参考,这是我完整的 partial.html

{namespace v=FluidTYPO3\vhs\ViewHelpers}

<f:if condition="1">
  <f:then>SUCCESS</f:then>
  <f:else>ERROR</f:else>
</f:if>
于 2015-05-24T20:31:54.363 回答