CakePHP 2.0 не сохраняется - PullRequest
       17

CakePHP 2.0 не сохраняется

0 голосов
/ 19 ноября 2011

Итак, я пытаюсь сохранить форму с помощью CakePHP.Это довольно простая форма, но по какой-то причине оператор INSERT никогда не генерируется.

Вот фрагмент кода из контроллера:

    public function add($sid = null) {
    if($this->request->is('post')) {
        //The app enters here. debug($this->request->data) confirms the data is there.
        if($this->Date->save($this->request->data)) {
            //debug($this->Date->save($this->request->data)) confirms CakePHP thinks its saving the data
            //however looking at the data, and the MySQL log, an INSERT statement is never attempted.
            //The flash and redirect occur as expected.
            $this->Session->setFlash('Dates Saved!');
            $this->redirect(array('action' => 'school', $sid));
        }
    }
    $this->set('schoolid', $sid);
}

Вот моя модель:

<?php
class Date extends AppModel {
    public $name = 'Date';
}

Вот представление:

<?php 
echo $this->Html->script(array(
                            'dhtmlxCalendar/dhtmlxcalendar.js'
                          )); 
echo $this->Html->css(array('dhtmlxCalendar/dhtmlxcalendar.css', 'dhtmlxCalendar/skins/dhtmlxcalendar_dhx_skyblue.css'));
?>
<div style="position:relative;height:380px;">
<?php echo $this->Form->create('Dates'); ?>
<?php echo $this->Form->input('schoolid', array('value' => $schoolid, 'type' => 'hidden')); ?>
<?php echo $this->Form->input('grade', array('options' => array('5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10', '11' => '11', '12' => '12'))); ?> 
<?php echo $this->Form->input('startreg', array('label' => 'Start Registration Date')); ?>
<?php echo $this->Form->input('endreg', array('label' => 'End Registration Date')); ?>
<?php echo $this->Form->input('lottery', array('label' => 'Lottery Date')); ?>
<?php echo $this->Form->end('Save Dates'); ?>
</div>
<?php echo $this->Html->script(array('Schools/add.js')); ?>

А вот и база данных:

CREATE TABLE IF NOT EXISTS `dates` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `schoolid` int(2) NOT NULL,
  `grade` int(2) NOT NULL,
  `startreg` datetime NOT NULL,
  `endreg` datetime NOT NULL,
  `lottery` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

Если у кого-то есть идеи, почему это происходит, или какие шаги отладки яможно попытаться решить эту проблему, я был бы признателен!

Ответы [ 2 ]

1 голос
/ 19 ноября 2011

Похоже, вы не правильно создали свою форму.Вы пытаетесь создать ' Dates '.Это должно быть ' Date '.Попробуйте:

<?php echo $this->Form->create('Date'); ?>
0 голосов
/ 27 августа 2013

Я знаю, что сообщение старое, но для тех, кто все еще приземляется здесь:

Иногда форма отправляется с запросом PUT автоматически, и $ this-> request-> is ('post') возвращает false.

Правильный тест будет:

if ($this->request->is('post') || $this->request->is('put')) { ... }
...