2

我想在AllowViewHelper中设置frontendUserGroup参数,但我不知道该怎么做。

有时(即使我刷新缓存也不确定)会弹出这个错误:

参数“frontendUserGroup”注册为“TYPO3\CMS\Extbase\Domain\Model\FrontendUserGroup”类型,但在视图助手“FluidTYPO3\Vhs\ViewHelpers\Security\AllowViewHelper”中属于“字符串”类型

将用户组的引用作为参数简单地传递如下是否正确?:

{namespace v=FluidTYPO3\Vhs\ViewHelpers}
...
<v:security.allow frontendUserGroup="3">
  <f:then>
    <span>Access granted</span>
  </f:then>
  <f:else>
    <span>Access denied</span>
  </f:else>
</v:security.allow>

ViewHelper注册参数如下:

$this->registerArgument('frontendUserGroup', 'TYPO3\CMS\Extbase\Domain\Model\FrontendUserGroup', 'The FrontendUserGroup to allow/deny');
4

2 回答 2

4

根据您的示例,您可能只使用 CMS Fluid 附带的 security.hasRole ViewHelper:

<f:security.ifHasRole role="3">
  <f:then>
    <span>Access granted</span>
  </f:then>
  <f:else>
    <span>Access denied</span>
  </f:else>
</f:security.ifHasRole>

与允许来自 EXT:vhs 的 ViewHelper 不同,此 ViewHelper 接受用户组的 UID 作为参数。除了 UID,您还可以传递用户组的标题,但据我所知,这可能是模棱两可的。

于 2015-04-24T06:40:39.773 回答
3

您应该将实际的 FrontendUserGroup 对象 ( TYPO3\CMS\Extbase\Domain\Model\FrontendUserGroup) 传递给您的视图。Extbase 提供了存储库,您可以将其注入到您的控制器中:

/**
 * @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserGroupRepository
 * @inject
 */
protected $frontendUserGroupRepository;

public function myAction() {
        ....
        $this->view->assign('specialUserGroup', $this->frontendUserGroupRepository->findByUid(3));
}

现在将此对象传递给 viewHelper:

<v:security.allow frontendUserGroup="{specialUserGroup}">
于 2015-04-23T17:15:46.030 回答