我有一个自写的TYPO3扩展名(我使用ext:extension_builder
创建它)
我的顶级TypoScript看起来像这样:
page = PAGE
page.10 = FLUIDTEMPLATE
page.10 {
format = html
file = EXT:cmsp/Resources/Private/Templates/User/Default.html
partialRootPaths {
10 = EXT:cmsp/Resources/Private/Partials/
}
layoutRootPaths {
10 = EXT:cmsp/Resources/Private/Layouts/
}
templateRootPaths
10 = EXT:cmsp/Resources/Private/Templates/
}
variables {
content_main < styles.content.get
content_main.select.where = colPos = 0
}
}
我使用了一个简单的Fluid Styled Content模板:
<f:link.action controller="user" action="search" class="btn btn-secondary">action link</f:link.action>
search
操作已在ext_localconf.php
中注册:
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'SimpleParser.Cmsp',
'Cmspfe',
[
'User' => 'list,search'
],
// non-cacheable actions
[
'User' => 'list,search'
]
);
我也有模板Search.html
:
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:layout name="Search" />
<f:section name="content">
<h1>Search Template</h1>
<f:flashMessages />
<table class="tx_cmsp" >
<tr>
<th> </th>
<th> </th>
</tr>
</table>
<form action="SearchConfim.php">
Searchterm: <input type="text" name="sTerm"><br>
<input type="submit" value="Submit">
</form>
</f:section>
</html>
问题是我无法在网站前端中创建或跟踪从顶层Default.html
(FLUIDTEMPLATE
对象)到Search.html
(Extbase控制器模板)的链接:
<f:link.action controller="user" action="search" class="btn btn-secondary">action link</f:link.action>
即使单击控制器的动作链接,我也一直保持在Default.html
上。我可以使用
<f:link.external ... ></f:link.external>
外部链接正在工作,但是我无法使用链接来访问Search.html
。也许问题是我使用的TypoScript无法激活控制器(以正确的方式)。但是我很高兴有人可以帮助我。
您的控制器名称是具有大写字母U的用户。在f:link.action中使用相同的名称,如果不更改控制器,甚至可以删除此参数。
Default.html
似乎是FLUIDTEMPLATE
中顶层渲染模板的名称。因此,我假设将<f:link.action ...
标记放置在该文件中-至少当前生成的链接似乎可以确认它,如下所示:
index.php?id=1
&tx__%5Baction%5D=search
&tx__%5Bcontroller%5D=User
&cHash=dffabf13e973c371d14fb2e34b23d1a0
它使用tx__
作为前缀,实际上应该类似于tx_cmsp_cmspfe
(您的扩展名和要使用的相应插件名称的组合。)]
Default.html
模板不在Extbase范围内,因此不知道当前应使用的扩展,控制器和插件Resources/Private/Templates/List.html
中的]此示例可以在Default.html
模板的Extbase范围之外用于当前页面布局,但是,它必须显式地使用正确的Extbase插件范围:
<f:link.action
action="search"
controller="User"
pluginName="Cmspfe"
extensionName="Cmsp"
pageUid="4321"
class="btn btn-secondary">
action link
</f:link.action>
pageUid
必须进行调整,并指向插件当前用作内容元素的页面]<form>
元素的参考(它们也出现在您的代码中-pluginName
,extensionName
和pageUid
在这种情况下也是必不可少的属性)]]