php - CakePHP 在保存到数据库之前更改数据

标签 php cakephp

所以我在 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

引用:Mark Story's post on Google groups

关于php - CakePHP 在保存到数据库之前更改数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10201185/

相关文章:

php - 如何从数据库中获取菜单及其子类别

php - 基于多个条件的高度过滤搜索

javascript - yii2:根据操作有条件显示/显示字段

php - cakephp:构造数据库数据返回

php - OOP:什么时候应该创建基类,什么时候不应该?

php - 选择元素之间的文本内容

php - CakePHP 在 Controller 中时调用模型中的函数

php - CakePHP 表与另一个表有两个关系

cakephp - 使用 HABTM 使用 "soft delete"技术的最佳方法是什么

mysql - 消除重复名称