正确的前端映射TCA'type'=>'check'

时间:2017-01-10 12:39:51

标签: typo3 fluid extbase

我目前在TYPO3 7 / Extbase中实现了一个用户权限对象。根据(简化):

将不同的权限映射为INT的位
'permissions' => array(
 'label' => 'permissions'
 'config' => array(
  'type' => 'check',
  'items' => array(
   array('Permission 1', ''),
   array('Permission 2', '')
  )
 )
),

后端的修改工作完美无缺,标志正确存储为数据库中的相应位。

如何在前端实现类似的行为?是否有(正确的)方法将位值映射到流体复选框?

1 个答案:

答案 0 :(得分:0)

您可以添加设置或返回位的自定义setter / getter函数。

在您的模型中:

/**
 * @var int
 */
protected $permissions;

添加如下内容:

/**
 * @return int
 */
public function getPermission2() {
  return $this->permissions & 2 > 0 ? 1 : 0;
}

/**
 * @param int $permission2
 */
public function getPermission2($permission2) {
  if ($permission2) {
    $this->permissions = $this->permissions | 2;
  } else {
    $this->permissions = $this->permissions ~ 2;
  }
}

然后,您可以parameter="permission2"f:form.checkbox中的{object.permission2}用于其他流畅的观看者。

PS:对于权限1,您需要将2更改为1,对于权限3,则为4