2017-01-10 10 views
0

私は現在、TYPO3 7/Extbaseにユーザー権利オブジェクトを実装しています。別の権利は(簡体字)あたりとしてINTのビットとしてマッピングされます:バックエンドでこれのTCA 'type' => 'check'のフロントエンドマッピングを修正しました

'permissions' => array(
'label' => 'permissions' 
'config' => array(
    'type' => 'check', 
    'items' => array(
    array('Permission 1', ''), 
    array('Permission 2', '') 
) 
) 
), 

変更は完璧に動作し、フラグが正しく彼DBの対応するビットとして保存されます。

どうすればフロントエンドで同様の動作を実現できますか?流体チェックボックスにビット値をマッピングする方法はありますか?

答えて

0

ビットを設定または返すカスタムセッター/ゲッター関数を追加できます。そのような

何か:

/** * @var int型 */ 保護$権限。

/** 
* @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; 
    } 
} 

その後することができます他の流体viewhelpersためf:form.checkboxまたは{object.permission2}parameter="permission2"

PS:許可1のためにあなたが12を変更し、許可3のために、それは4

+0

ああだろう必要がある、右、私は、このためにカスタムのセッター/ゲッター考えていませんでした。これは、データ構造をうまくカプセル化し、流体コンポーネントへの直接的な特性マッピングを使用することを可能にする。現時点では、ビットごとに単一のブール値に現在の値を処理し、これを配列としてビューに割り当てることでこれを解決しました(またその逆もあります)。 – mrwienh

関連する問題