Почему моя форма не сохраняет правильное значение? - PullRequest
0 голосов
/ 01 октября 2010

Хорошо, в CakePHP у меня есть следующий код на мой взгляд add.ctp:

echo $this->Form->radio('color', array('1' => 'red', '2' => 'green', '3' => 'blue'), array('value' => false));

, что приводит к правильному HTML:

<fieldset>
    <legend>Color</legend>
    <input type="radio" name="data[Some][color]" id="SomeColor1" value="1"  />
    <label for="SomeColor1">red</label>
    <input type="radio" name="data[Some][color]" id="SomeColor2" value="2"  />
    <label for="SomeColor2">green</label>
    <input type="radio" name="data[Some][color]" id="SomeColor3" value="3"  />
    <label for="SomeColor3">blue</label>
</fieldset>

Если я отмечу "зеленый", например, debug($this->data); даст ожидаемый результат:

Array
(
    [Some] => Array
        (
            [color] => 2
        )

)

Однако , CakePHP вставляет неверные данные в таблицу:

INSERT INTO `somes` (`color`) VALUES (1)

Есть какая-нибудь подсказка, что здесь происходит? Чего мне не хватает?

EDIT:

  • Я использую $this->Some->save($this->data), и тип данных цвета TINYINT(1) UNSIGNED NOT NULL DEFAULT 0.
  • Ради примера я удалил другие данные, но в основном все остальное работает просто отлично, и запись сохраняется.

Ответы [ 2 ]

3 голосов
/ 01 октября 2010

cakePHP считает tinyInt (1) логическим значением, поэтому .. 0 = 0 и> 0 = 1

2 голосов
/ 01 октября 2010

Это из-за TINYINT (1). Измените его, например, TINYINT (3), и ваши данные будут сохранены правильно.

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