флажок не отмечен при редактировании записи пользователя в cakephp - PullRequest
1 голос
/ 08 февраля 2011

У меня есть таблица 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;
  }

Этот код сохраняет несколько значенийв качестве разделенных запятыми значений в базе данных.

Основная проблема возникает, когда я редактирую пользователя.Если пользователь выбрал несколько типов во время создания пользователя, ни один из флажков не установлен для этого типа.

Ответы [ 2 ]

0 голосов
/ 24 октября 2012

@ dogmatic69 после этого $this->data['User']['type'] = explode(',', $user['User']['type']); и массив правильно упорядочен, флажок все еще не отмечен

0 голосов
/ 08 февраля 2011

у вас есть $this->data['User']['type'] = join(',', $this->data['User']['type']); в beforeSave (), поэтому вам нужно будет сделать то же самое в afterFind () $this->data['User']['type'] = explode(',', $user['User']['type']);, что снова сделает его массивом.

Это, однако, ужасный дизайн, вы должны подумать о том, чтобы сделать это правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...