public function upload ($data = null) {
foreach ($data as $file) {
$filename = $file['name'];
$file_tmp_name = $file['tmp_name'];
$dir = WWW_ROOT.'img'.DS.'uploads';
$allowed = array('png', 'jpg', 'jpeg');
if (!in_array(substr(strrchr($filename, '.'),1) , $allowed)) {
throw new NotFoundException("Error Processing Request", 1);
}
elseif (is_uploaded_file($file_tmp_name)) {
$new_filename = DS.STring::uuid().'-'.$filename;
move_uploaded_file($file_tmp_name,$dir.$new_filename);
if ($this->Upload->save($this->request->data)) {
`$this->Session->setFlash('Data Saved!');
}
}
}
}
我收到了这个错误..
在非对象上调用成员函数save()
如何解决此问题?
答案 0 :(得分:1)
$model = ClassRegistry::init('Upload');
然后使用
$model->save();
使用
if (ClassRegistry::init('Upload')->save($this->request->data)) {
}
答案 1 :(得分:1)
为什么不复制控制器的名称及其文件名(以及表名),即UploadsControllerl?这是一个CakePHP convention:
控制器类名称为复数,CamelCased,以Controller结尾。 PeopleController和LatestArticlesController都是传统控制器名称的示例。
修改强> 我以为你的方法是在控制器类中。在组件中,在使用模型之前,您需要按如下方式注册它:
$model = ClassRegistry::init('Yourmodel');
所以你应该使用:
$model = ClassRegistry::init('Upload');
$model->save($this->request->data);
答案 2 :(得分:1)
如果您在组件中使用模型,或者在没有关联的情况下使用其他模型,请使用ClassRegistry。 使用
ClassRegistry::init('Upload');
答案 3 :(得分:0)
请在您的控制器功能中加载模型,假设您正在使用users表,然后在函数$ this-> loadmodel(' User')中加载用户模型; 之后你可以使用代码
if($this->User->save($this->request->data)){
your code......
}