0

我有一个产品数据库扩展。基于Extbase + Fluid。一切正常,但我遇到了访问受限的问题。

有些产品只适用于特定的用户群。当我设置一个组,并且有人使用该产品的直接链接时,登录站点应该出现在没有登录的情况下。

它适用于网站,但使用产品我得到:

“该值必须是“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 都运行了。

4

1 回答 1

2

You can change the action in a way so that it allows for no-instances of your product and check for the existance within fluid:

public function showAction(Tx_YourExt_Domain_Model_Product $product = NULL) ..

in Fluid:

<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>

Downside of this is, that you can't handle proper 404's easily.

There's an ifAuthenticated viewhelper as well and in combination with the above it should be straight forward to handle proper 404's as well. I'm not sure which TYPO3 version this has been introduced though.

于 2013-09-23T17:39:22.963 回答