【问题标题】:fluid powered TYPO3 - the right settings for namespaces流体驱动的 TYPO3 - 命名空间的正确设置
【发布时间】: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">

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

【问题讨论】:

    标签: typo3 fluid flux


    【解决方案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,分辨率如下。

    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 命名空间不会打印到输出中。

    【讨论】:

    • “检查 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>
    

    【讨论】:

    【解决方案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} 是新的命名空间约定。
    猜你喜欢
    • 1970-01-01
    • 2016-01-03
    • 2012-07-23
    • 2014-07-12
    • 2017-01-26
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多