将变量从控制器传递给模型(beforeSave)(上传字段)CakePHP

时间:2015-02-04 10:41:42

标签: cakephp model upload controller

我真的需要知道这个问题才能完成我的工作。

这里我将给出一个包含模型和控制器的示例。 我想将$ final_name从控制器传递给我的模型的beforeSave()

public function admin_add() {
    if($this->request->is('post')) {
        if($this->data['Client']['file']['tmp_name'] != '') {
                // Upload block
                $tmp_file = $this->data['Client']['file']['tmp_name'];
                $file = new File($tmp_file);
                if($file->mime() == "image/jpeg" or "image/png") {
                    $ext = explode('.', $this->data['Client']['file']['name']);
                    $name = md5($this->data['Client']['file']['name']);
                    $file->copy(IMG_DIR . 'portfolio\\' . $name . '.' . end($ext));
                    $final_name = $name . "." . end($ext); // File name with extension
                }
                // If save
            if($this->Client->save($this->request->data)) {
                $this->Session->setFlash('Client cadastrado com sucesso!', 'admin_flash');
            }
        }
    }
}

在我的客户端模型中

public function beforeSave($options = array()) {
    if($this->data['Client']['file']['name'] != null) {
        $this->data['Client']['file'] = $final_name;
    }
    return parent::beforeSave($options);
}

1 个答案:

答案 0 :(得分:1)

在控制器中

$this->request->data['Client']['final_name'] = $name . "." . end($ext);

在模型中

public function beforeSave($options = array()) {
if($this->data['Client']['file']['name'] != null) {
    $this->data['Client']['file'] = $this->data['Client']['final_name'];
}
return parent::beforeSave($options);
}