CakePHP在保存到DB之前更改数据

K. *_*esi 2 php cakephp

所以我在控制器中有对象$ this-> data ['VideoForm'] ['filename'],但我想在将它保存到数据库之前将getExtension($ filename)的返回值附加到它.这就是我的尝试:

$this->data['VideoForm']['filename'] = $this->data['VideoForm']['filename'] . "." . getExtension($this->data['VideoForm']['file']['name']);
Run Code Online (Sandbox Code Playgroud)

当我尝试使用"="或"=>"运算符为其分配新值时,它会引发错误.知道怎么做吗?我确信这很简单,我很想念......

编辑:这是错误:

Notice (8): Indirect modification of overloaded property MediaController::$data has no effect [APP/Controller/MediaController.php, line 31]
Run Code Online (Sandbox Code Playgroud)

编辑:我继续环顾四周,如果我上传xxx.jpg,getExtension()函数肯定会返回"jpg",所以这不是问题所在.有任何想法吗?

Cos*_*sta 7

该错误是由于PHP 5.2+更改__get()的工作方式 - 它不返回对值的引用,而是返回只读版本.Cake 2.0+对某些控制器属性使用__get().

在这种情况下的解决方案是写入$this->request->data而不是$this->data.

参考:Mark Story在Google群组上的帖子