错误:在非对象上调用成员函数save()

时间:2014-11-28 13:16:12

标签: file cakephp upload

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()

如何解决此问题?

4 个答案:

答案 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);

请参阅:Use a model in a component

答案 2 :(得分:1)

如果您在组件中使用模型,或者在没有关联的情况下使用其他模型,请使用ClassRegistry。 使用

ClassRegistry::init('Upload');

答案 3 :(得分:0)

请在您的控制器功能中加载模型,假设您正在使用users表,然后在函数$ this-> loadmodel(' User')中加载用户模型;  之后你可以使用代码

if($this->User->save($this->request->data)){
     your code......

}