我們的應用程序(Zend Framework的2 + 2原則)具有Order
實體,引用像BillingAddress
等相關對象。我們已經實現了一個REST API來創建和更新訂單。數據被傳遞到該API作爲關聯數組和被引用的對象的數據可以封裝該數組內。 I. E.由Order
API接收的數據看起來像這樣ZF2 +學說2:通過ZF2型水合物相關的對象
$data = [
// This is an attribute of the Order entity itself
'remarks' => 'Urgent order',
// This is the data of the referenced BillingAddress
'billing_address' => [
'firstname' => 'Barry',
'lastname' => 'Fooman'
]
];
首先要注意瞭解這是一個事實,即在給定BillingAddress
可以是新的或現有的!在後一種情況下,id
將是billing_address
數據的一部分。
使用DoctrineObject
水化
$hydrator = new DoctrineObject($entityManager);
$hydrator->hydrate($order, $data);
學說負責更新或自動地創建引用的對象。這就是我們到目前爲止做:以接收到的數據,做一些處理,消毒和驗證數據,並調用水化。
但是我們現在想用Zend\Form\Form
用於接收數據的易消毒。設置爲訂單的簡單屬性的Form
是很容易
class OrderForm
extends \Zend\Form\Form
{
public function __construct()
{
parent::__construct('order');
$this
->add([
'name' => 'remarks',
'type' => 'text'
]);
}
}
但我與引用的對象奮鬥。如何設置形式,使所引用的對象被創建或更新的原則,就像直接使用水化?我一定要創建一個「子表格/字段集」?
謝謝你的建議,我目前正在實施和將標誌着你的答案是正確的,當我做了一切工作 – Subsurf
這並獲得成功 – Subsurf