如何在 CakePHP 中使用 Bitwise 将复选框标记为已选中?
How to mark checkbox as selected using Bitwise in CakePHP?
我正在使用 CakePHP 2.6 开发一个应用程序,我有一个表单,用户可以在其中设置一系列标志来创建日历事件。
我已设法设置 'add' 操作来显示标志,并在验证后在控制器中循环并将值保存到我的 table 中。这个过程是使用按位完成的。下面的代码示例:
'add' 动作视图:
echo $this->Form->input('flag', array('label' => false, 'type' => 'select', 'multiple' => 'checkbox', 'options' => $flagtypes, 'hiddenField' => false));
'add'动作控制器:
$flags = 0;
foreach ($data['flag'] as $r) {
$flags |= (int)$r;
}
但是,当标记显示时,我无法在编辑操作视图中将标记的复选框标记为已选中。
'edit' 动作视图:
$selected = array($results[0]['BitwiseFlag']);
echo $this->Form->input('flag', array('label' => false, 'type' => 'select', 'multiple' => 'checkbox', 'options' => $flagtypes, 'hiddenField' => false, 'selected' => $selected));
$results[0]['BitwiseFlag'] = 32 在 table.
$flagtypes 数组:
array(2) { [32]=> string(4) "Test" [64]=> string(9) "Testing 2" }
将您的输入行更改为:
$selected = array($results[0]['BitwiseFlag']);
// Change 'checked' to 'selected'.
echo $this->Form->input('flag', array('label' => false, 'type' => 'select', 'multiple' => 'checkbox', 'options' => $flagtypes, 'hiddenField' => false, 'selected' => $selected));
不完全确定您的表单数据结构是什么样的,但是您应该能够从您的控制器中设置标志。在$this->request->data
中设置相关值,像这样:-
$this->request->data[$this->{$this->modelClass}->alias]['flag'] = [
0 => true,
1 => false,
2 => true
];
然后当您使用 $this->Form->input('flag', [...])
时,它应该为您检查正确的标志。
我正在使用 CakePHP 2.6 开发一个应用程序,我有一个表单,用户可以在其中设置一系列标志来创建日历事件。
我已设法设置 'add' 操作来显示标志,并在验证后在控制器中循环并将值保存到我的 table 中。这个过程是使用按位完成的。下面的代码示例:
'add' 动作视图:
echo $this->Form->input('flag', array('label' => false, 'type' => 'select', 'multiple' => 'checkbox', 'options' => $flagtypes, 'hiddenField' => false));
'add'动作控制器:
$flags = 0;
foreach ($data['flag'] as $r) {
$flags |= (int)$r;
}
但是,当标记显示时,我无法在编辑操作视图中将标记的复选框标记为已选中。
'edit' 动作视图:
$selected = array($results[0]['BitwiseFlag']);
echo $this->Form->input('flag', array('label' => false, 'type' => 'select', 'multiple' => 'checkbox', 'options' => $flagtypes, 'hiddenField' => false, 'selected' => $selected));
$results[0]['BitwiseFlag'] = 32 在 table.
$flagtypes 数组:
array(2) { [32]=> string(4) "Test" [64]=> string(9) "Testing 2" }
将您的输入行更改为:
$selected = array($results[0]['BitwiseFlag']);
// Change 'checked' to 'selected'.
echo $this->Form->input('flag', array('label' => false, 'type' => 'select', 'multiple' => 'checkbox', 'options' => $flagtypes, 'hiddenField' => false, 'selected' => $selected));
不完全确定您的表单数据结构是什么样的,但是您应该能够从您的控制器中设置标志。在$this->request->data
中设置相关值,像这样:-
$this->request->data[$this->{$this->modelClass}->alias]['flag'] = [
0 => true,
1 => false,
2 => true
];
然后当您使用 $this->Form->input('flag', [...])
时,它应该为您检查正确的标志。