2015-04-06 104 views
0

我目前正在開發媒體行爲以將媒體附加到模型。 我想在媒體模型中處理文件(上傳)這樣,每次我上傳一個文件,它都直接關聯到一個文件。將附加數據傳遞給實體

在cakephp2.0中,我直接在數據數組中傳入一個額外的字段「文件」,從中我可以提取文件並進行處理。 我想在我的行爲做:

$entity = $this->_table->Medias->newEntity(array(
    'path' => WWW_ROOT . $config['path'], 
    'file' => $data[$field], 
    'field' => $field 
)); 

file關鍵是不相關的任何字段在表中。但它沒有通過,我不能在我的媒體模型中回到beforeSave()生命週期回調中。

如何以適當的方式將它傳遞給我的模型?

回答

1

默認情況下,實體受到大規模分配攻擊的保護。這意味着在從數組中創建實體時,您需要明確告訴實體或newEntity()哪些字段可以訪問。

請閱讀質量分配的文檔:

http://book.cakephp.org/3.0/en/orm/entities.html#mass-assignment

你也可以告訴newEntitypatchEntity方法訪問的字段列表應該是什麼。請閱讀如何使用fieldListaccessibleFields選項對這些方法的文檔:

http://book.cakephp.org/3.0/en/orm/saving-data.html#converting-request-data-into-entities

最後,另一個原因,一些數據可能達不到實體驗證。確保您的字段通過了您對他們的驗證,就好像他們違反了任何規則一樣,他們不會被複制到實體。