TYPO3 9.5.x では、このコードは私の extbase 拡張機能の Layout/Default.html テンプレートで機能します。ただし、同じコードは、List.html テンプレートなど、他のテンプレートでは機能しません。そこで使用すると、ビューヘルパーの出力が得られません。TYPO3 8.x では、Default.html だけでなく、すべてのテンプレートで機能します。それには正当な理由がありますか?Layout/Default.html ではないパーシャルとテンプレート内で f:security を使用するにはどうすればよいですか?
<f:security.ifHasRole role="2">
<f:then>
<p>CHECK RIGHTS role=2</p>
</f:then>
<f:else>
<p>CHECK RIGHTS role=not2</p>
</f:else>
</f:security.ifHasRole>
このコードと同じなので、f:else: とは関係ありません。
<f:security.ifAuthenticated>
<p>I AM LOGGED IN, but it does not show up :( </p>
</f:security.ifAuthenticated>
レイアウト/Default.html:
<html xmlns:f="https://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:security.ifHasRole role="2">
<p>ROLE is 2 in Default.html, this gets rendered as expected</p>
</f:security.ifHasRole>
<div class="container">
<f:debug title="Debug" maxDepth="12">{_all}</f:debug>
<f:render section="content" />
</div><!-- /container -->
</html>
テンプレート/統計/List.html
<html xmlns:f="https://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:layout name="Default" />
This Template is responsible for creating a table of domain objects.
If you modify this template, do not forget to change the overwrite settings
in /Configuration/ExtensionBuilder/settings.yaml:
Resources:
Private:
Templates:
List.html: keep
Otherwise your changes will be overwritten the next time you save the extension in the extension builder
<f:section name="content">
<h3>Anruf-Statistiken</h3>
<f:flashMessages />
<div style="float:right; clear:both;"><f:link.action action="export" controller="Statistic" pluginName="Run"><button type="button" class="btn btn-xs btn-default">Tabelle für Excel speichern (CSV-Export)</button></f:link.action></div>
<table style="padding: 1em; margin-top:2em; width:100%;" class="tx_srv2" >
<tr>
<th style="padding: 1em;">ID</th>
<th style="padding: 1em;">Timestamp</th>
<th style="padding: 1em;"><f:translate key="tx_srv2_domain_model_statistic.agent" /></th>
<th style="padding: 1em;"><f:translate key="tx_srv2_domain_model_statistic.status" /></th>
<th style="padding: 1em;"><f:translate key="tx_srv2_domain_model_statistic.campaigntitle" /></th>
<th style="padding: 1em;"><f:translate key="tx_srv2_domain_model_statistic.duration" /> (sec.)</th>
<th style="padding: 1em;"><f:translate key="tx_srv2_domain_model_statistic.comment" /></th>
</tr>
<f:widget.paginate objects="{statistics}" configuration="{itemsPerPage: 10, insertBelow:1}" as="paginatedStatistics">
<f:for each="{paginatedStatistics}" as="statistic">
<tr>
<td style="padding: 1em;">{statistic.uid}</td>
<td style="padding: 1em;"><f:format.date format="Y-m-d H:i:s">{statistic.crdate}</f:format.date></td>
<td style="padding: 1em;">{statistic.agent.username}</td>
<td style="padding: 1em;">{statistic.status}</td>
<td style="padding: 1em;">{statistic.campaigntitle}</td>
<td style="padding: 1em;">{statistic.duration}</td>
<td style="padding: 1em;">{statistic.comment}</td>
</tr>
</f:for>
</f:widget.paginate>
</table>
<f:security.ifAuthenticated>
<f:then>
This part should be shown if there is a frontend user logged in, but it never shows up.
</f:then>
<f:else>
This part should be shown if the current user is not logged in., but it also doesnt show up.
</f:else>
</f:security.ifAuthenticated>
</f:section>
</html>
フロントエンドでは、List.html の f:security 部分のコンテンツはレンダリングされませんが、Default.html の f:security 部分はレンダリングされます。また、オブジェクトのリストである List.html からの通常の出力は、期待どおりにレンダリングされます。