我有一个产品数据库扩展。基于 Extbase + Fluid 。 一切都像它一样工作,但我遇到了限制访问的问题。
某些产品仅适用于特定用户群。当我设置一个组,并且有人使用direkt链接到该产品时,登录站点应该是在没有登录的情况下。
它适用于网站,但有产品我得到:
“值必须是”xx“类型,但类型为”NULL“。”错误
我也使用realUrl。
为我的分机设置了enable404forInvalidAlias
,因此不存在的产品通话会导致404页面,但不幸的是我到目前为止无法处理限制访问问题。
版本为: 4.5.22 解决方案应该没有重大更新。
更新:
在showAction
中使用= NULL
默认值定义的产品。
我的流体模板已经有了这样的条件:
<f:if condition="{product}">
...
</f:if>
来自此行的错误消息:
Tx_Extbase_MVC_Exception_InvalidArgumentValue thrown in file
\typo3\sysext\extbase\Classes\MVC\Controller\Argument.php
in line 389.
我进行了一些调试,整个showAction都会运行。
答案 0 :(得分:2)
您可以通过某种方式更改操作,以便允许产品无实例并检查流体中是否存在:
public function showAction(Tx_YourExt_Domain_Model_Product $product = NULL) ..
流体中的:
<f:if condition="{product}">
<f:then> <!-- show your product --> </f:then>
<f:else>
<!-- show a login form, e.g. something you have in typoscript -->
</f:else>
</f:if>
这样做的缺点是,你无法轻易处理正确的404。
还有一个ifAuthenticated viewhelper,结合上面的内容,它应该直接处理正确的404。我不确定是哪个TYPO3版本已经推出。