我在表格上遇到了一些问题,这让我感到疯狂。
每当我尝试将图像上传到我的数据库时,我都会
.Columns(col =>
{
col.ForeignKey(c => c.ScheduleID, (System.Collections.IEnumerable)ViewBag.schedules, "ID", "EventDate").Title("Date");
})
我不确定我做错了什么或错过了什么。任何帮助表示赞赏。
这是我的模特
Notice: Array to string conversion [CORE\Cake\Model\Datasource\DboSource.php, line 1009]
这是我的控制器
'banner_image' => array(
'not_required' => array(
'allowEmpty' => true,
'required' => false,
),
'is_image' => array(
'rule' => 'is_image_check',
'message' => 'We found that the file you uploaded is not an image.',
//'allowEmpty' => false,
'required' => false,
//'last' => false, // Stop validation after this rule
//'on' => 'create', // Limit validation to 'create' or 'update' operations
),
),
这是我的表格
/**
* admin_add method
*
* @return void
*/
public function admin_add() {
if ($this->request->is('post')) {
$this->Survey->create();
if ($this->Survey->save($this->request->data)) {
$this->Session->setFlash(__('The survey has been saved.'));
return $this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The survey could not be saved. Please, try again.'));
}
}
}
答案 0 :(得分:3)
这是您的控制器收到的字段banner_image
:
$this->request->data['Survey']['banner_image'] = array(
'name' => 'example_image.jpg',
'type' => 'image/jpg',
'tmp_name' => 'C:/WINDOWS/TEMP/php1EE.tmp', //path will vary on Unix-like OSes
'error' => 0,
'size' => 41737,
);
如果您尝试将其保存到表格中,您将获得
Notice: Array to string conversion in filename on line X
因此,您必须先进行一些预处理才能拨打save()
。
您的surveys.banner_image
可能已设置为接受文件名。
一种典型的方法是实现Survey::beforeSave()
回调并添加必要的代码,将上传的文件从其临时位置移动到您选择的目标文件夹。
然后,您使用$data['Survey']['banner_image']
覆盖$data['Survey']['banner_image']['name']
数组。
或者,您可以使用处理上传的多个CakePHP插件中的一个来代替重新发明轮子,例如josegonzalez/cakephp-upload。
有关进一步参考,请参阅: