我目前正在开发媒体行为,以便将媒体附加到模型上。 我想在Media模型中处理文件(上传);这样,每次上传文件时,它都直接与文件相关联。
在cakephp2.0中,我直接在数据数组中传入了一个额外的字段'文件'从哪里我可以提取文件并进行处理。 我在这里尝试做我的行为:
$entity = $this->_table->Medias->newEntity(array(
'path' => WWW_ROOT . $config['path'],
'file' => $data[$field],
'field' => $field
));
file
键与表格中的任何字段无关。但它没有通过,我无法在我的Medias模型中的beforeSave()
生命周期回调中恢复它。
如何以正确的方式将其传递给我的模型?
答案 0 :(得分:1)
默认情况下,实体受到群发分配攻击的保护。这意味着当从数组中创建实体时,您需要明确告诉实体或newEntity()
哪些字段可以访问。
请阅读有关质量分配的文档:
http://book.cakephp.org/3.0/en/orm/entities.html#mass-assignment
您还可以告诉newEntity
和patchEntity
方法可访问字段列表应该是什么。请阅读有关如何使用这些方法的fieldList
和accessibleFields
选项的文档:
http://book.cakephp.org/3.0/en/orm/saving-data.html#converting-request-data-into-entities
最后,某些数据可能无法到达实体的另一个原因是验证。确保您的字段正在通过您对它们的验证,就好像它们未通过任何规则一样,它们将不会被复制到实体。