У меня есть таблица user
, в которой есть поля username
, password
и type
.type
может быть любым или их комбинацией: сотрудник , поставщик и клиент , например, пользователь может быть одновременно поставщик и клиент или некоторая другая комбинация.Для поля type
я использовал многократный флажок (см. Код ниже).Это файл views / users / add.ctp:
<div class="users form">
<?php echo $this->Form->create('User');?>
<fieldset>
<legend><?php __('Add User'); ?></legend>
<?php
echo $this->Form->input('username');
echo $this->Form->input('password');
echo $this->Form->input('type', array('type' => 'select', 'multiple' => 'checkbox','options' => array(
'client' => 'Client',
'vendor' => 'Vendor',
'employee' => 'Employee'
)
));
?>
</fieldset>
<?php echo $this->Form->end(__('Submit', true));?>
</div>
В файле модели я использовал beforeSave
метод обратного вызова:
app/models/user.php
function beforeSave() {
if(!empty($this->data['User']['type'])) {
$this->data['User']['type'] = join(',', $this->data['User']['type']);
}
return true;
}
Этот код сохраняет несколько значенийв качестве разделенных запятыми значений в базе данных.
Основная проблема возникает, когда я редактирую пользователя.Если пользователь выбрал несколько типов во время создания пользователя, ни один из флажков не установлен для этого типа.