流体动力TYPO3 - 命名空间的正确设置

时间:2014-05-26 13:20:51

标签: typo3 fluid flux

我正在使用TYPO3 6.2.3和来自TER的扩展:(助焊剂7.0.0,fludipages 3.0.0,fluidcontent 4.0.0,VHS 1.8.5) 命名空间的正确实现是什么?在Documentation的fluidtypo3是它

{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">

在其他places上,它是:

{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://fedext.net/ns/flux/ViewHelpers"
     xmlns:v="http://fedext.net/ns/vhs/ViewHelpers"
     xmlns:f="http://typo3.org/ns/fluid/ViewHelpers">

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

3 个答案:

答案 0 :(得分:2)

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

{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. 检查网址是否以http://typo3.org.ns/开头,然后将其后的所有内容解释为类名
  3. 忽略它,否则
  4. 有关更多信息,请查看typo3/sysext/fluid/Tests/Unit/Core/Parser/TemplateParserTest.php

    中的示例

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

答案 1 :(得分:1)

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>

答案 2 :(得分:1)

Q: What is the right implementation of the namespaces?
A: I'm not sure myself. But in the case of vhs viewhelpers, this namespace declaration in a partial works for me (Typo3 6.2.12, vhs 2.3.2)

{namespace v=FluidTYPO3\vhs\ViewHelpers}

Side note
The following namespace declaration will not work, because it is not using the namespace notation (thx @kimomat):

{namespace v=Tx_Vhs_ViewHelpers}

On the other hand, for the namespace of my own viewhelpers, I have to use the above notation and it works

{namespace speciality = Tx_Speciality_ViewHelpers}

For reference, this is my complete partial.html

{namespace v=FluidTYPO3\vhs\ViewHelpers}

<f:if condition="1">
  <f:then>SUCCESS</f:then>
  <f:else>ERROR</f:else>
</f:if>