所以我在 Controller 中有对象 $this->data['VideoForm']['filename'] ,但我想在将它保存到数据库之前将 getExtension($filename) 的返回值附加到它.这就是我正在尝试的:
$this->data['VideoForm']['filename'] = $this->data['VideoForm']['filename'] . "." . getExtension($this->data['VideoForm']['file']['name']);
当我尝试使用“=”或“=>”运算符为其分配新值时,它会抛出错误。知道怎么做吗?我确定这是我所缺少的非常简单的东西......
编辑:这是错误:
Notice (8): Indirect modification of overloaded property MediaController::$data has no effect [APP/Controller/MediaController.php, line 31]
编辑:我继续环顾四周,如果我上传 xxx.jpg,getExtension() 函数肯定会返回“jpg”,所以这不是问题所在。有什么想法吗?
最佳答案
该错误是由于 PHP 5.2+ 改变了 __get() 的工作方式——它不返回对值的引用,而是一个只读版本。 Cake 2.0+ 对某些 Controller 属性使用 __get() 。
这种情况下的解决方案是写入$this->request->data
而不是$this->data
。
关于php - CakePHP 在保存到数据库之前更改数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10201185/