2017-07-07 52 views
0

在將實體成員名稱傳遞給視圖之前,是否有一種更好的方法來更改實體成員名稱?在我的例子中,我有一個實體產品。我的產品有一個會員application_id。我輸出它到JSON。現在我的前端開發人員希望將此值作爲applicationId(不包含下劃線)。因爲我返回一個相當複雜的結構與對象,包含其他對象等,我不想遍歷整個結果集,並在循環中更改成員名稱。所以我查看了實體並希望找到類似$ _map的地方,我可以將成員名映射到自定義名稱,但是我沒有找到任何東西。cakePHP3:在渲染之前更改實體成員名稱

有沒有辦法做到這一點,而不使用beforeRender循環?

回答

1

manual

當實體轉換爲所述虛擬&隱藏字段列表 施加一個JSON。實體也遞歸地轉換爲JSON。這個 意味着如果您渴望加載的實體及其關聯CakePHP 將正確處理將關聯數據轉換爲正確的 格式。

所以,你可以在你的Entoty創建虛擬財產這種方式

protected $_virtual = ['ApplicationId']; 

protected function _getapplicationId() 
{ 
    return $this->application_id; 
} 

似乎對蛋糕的命名約定一點點,但它的工作原理

+0

謝謝,沒想到遠遠不夠。我仍然需要將application_id添加到$ _hidden中以將其從輸出中移除,但那沒關係。有趣的是,當試圖訪問_getapplicationId()中的$ this-> application_id時,它是null,儘管XDebug顯示了正確的值。我不得不將_getapplicationId()更改爲_getapplicationid(),那麼它正在工作。我想這是因爲一些內部的Inflector可能認爲getapplicationId試圖獲得實際值application_id。 – Seb