流体驱动的 TYPO3 - 命名空间的正确设置
Posted
技术标签:
【中文标题】流体驱动的 TYPO3 - 命名空间的正确设置【英文标题】:fluid powered TYPO3 - the right settings for namespaces 【发布时间】:2014-07-15 06:53:42 【问题描述】:我正在使用 TYPO3 6.2.3 和 TER 的扩展:(flux 7.0.0,fludipages 3.0.0,fluidcontent 4.0.0,VHS 1.8.5) 命名空间的正确实现是什么?在fluidtypo3的Documentation中是
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://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 内部还是外部,我也有点困惑?
【问题讨论】:
【参考方案1】:有两种方法可以定义命名空间。第一个是流体自定义样式表示法中的命名空间标记:
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
,分辨率如下。
-
检查
settings.namespaces.http://example\.org/url = className
,如果匹配,使用这个
检查url是否以http://typo3.org.ns/
开头,那么后面的都会被解释为类名
否则忽略它
更多信息,请查看typo3/sysext/fluid/Tests/Unit/Core/Parser/TemplateParserTest.php
中的示例
流体检测和解释的 AFAIK 命名空间不会打印到输出中。
【讨论】:
“检查 settings.namespaces.example\.org/url = className”是什么意思? 我的意思是您页面的排版设置。在那里,您可以按照 2 中指出的方式定义命名空间 --> 类名映射。【参考方案2】: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>
【讨论】:
如果您不希望呈现 html,可以将属性 data-namespace-typo3-fluid="true" 添加到 html 标记。此功能在 TYPO3 7.3 docs.typo3.org/c/typo3/cms-core/master/en-us/Changelog/7.3/… 中引入【参考方案3】:问:命名空间的正确实现方式是什么? 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
供参考,这是我完整的部分.html
namespace v=FluidTYPO3\vhs\ViewHelpers
<f:if condition="1">
<f:then>SUCCESS</f:then>
<f:else>ERROR</f:else>
</f:if>
【讨论】:
namespace v=Tx_Vhs_ViewHelpers 是旧的书写约定。 namespace v=FluidTYPO3\vhs\ViewHelpers 是新的命名空间约定。以上是关于流体驱动的 TYPO3 - 命名空间的正确设置的主要内容,如果未能解决你的问题,请参考以下文章