我正在尝试创建一个表单" Movie"如下所示,我的数据库接受movie_id,标题,年份和描述。当我运行代码时,它会尝试存储"数组"作为年份输入。这是我得到的错误=> movie_id,title,year,description)VALUES(NULL,' Movie1',Array,' some text')
观点:
<?php
echo $this->Form->create('Movie'); ?>
<?php echo __('Add Movie'); ?>
<?php
echo $this->Form->hidden('movie_id');
echo $this->Form->input('title');
echo $this->Form->input('year', array(
'type'=>'date',
'dateFormat'=>'Y',
'minYear'=>'1990',
'maxYear'=>date('Y'),
));
echo $this->Form->input('description');
?>
<?php echo $this->Form->end(__('Submit'));
?>
控制器:
public function add() {
if ($this->request->is('post')) {
$this->Movie->create();
if ($this->Movie->save($this->request->data)) {
$this->Session->setFlash(__('The movie has been created'));
$this->redirect (array('action'=>'index'));
}
else {
$this->Session->setFlash(__('The movie could not be created. Please, try again.'));
}
}
}
答案 0 :(得分:0)
最好的办法是调试你的$ this-&gt; request-&gt;数据。
我不确定自己,但我曾经遇到过这个问题。发生的事情是,当您将输入定义为日期时,它将表现为数组。
它将变为$this->request->data['Movie']['year']['year'];
您可以通过执行以下操作来修改数据
$this->request->data['Movie']['year'] = $this->request->data['Movie']['year']['year'];
答案 1 :(得分:0)
我相信你的问题在这里:
$this->Form->input('year', array(
'type'=>'date',
'dateFormat'=>'Y',
'minYear'=>'1990',
'maxYear'=>date('Y'),
));
而不是它应该使用
$this->Form->input('Movie.year', array(
'type'=>'text',
'name' => 'data[Movie][year]',
));
如果您不想使用'text'类型输入,请在您的options数组中使用'select'。这里主要关注的是Movie.year
并将默认的CakePHP命名过程覆盖到'name' => 'data[Movie][year]'
。检查 here 。