2012-01-06 62 views
0

我在Flow3的安全帳戶/聚會模塊中遇到問題。Flow3 PersonName回滾

我試圖改變一個人的姓和名甲方:

$person = $account->getParty(); 
$name = $person->getName(); 
$name->setFirstName($firstName); 
$name->setLastName($lastName); 
$this->accountRepository->update($account); 
$this->partyRepository->update($person); 

$帳戶是一個有效的\TYPO3\FLOW3\Security\Account對象。

使用此代碼並更改$ firstName和$ lastname時,flow3正在執行回滾。

我找到了一個解決辦法:

$personName = new \TYPO3\Party\Domain\Model\PersonName('', $firstName,'', $lastName); 
$person->setName($personName); 

這工作正常,但爲什麼?

回答

1

這是因爲Person::getName()返回的副本PersonName而不是一個參考。這意味着如果您在外部更改Personname($name),則不會在$person$this->name)內更新PersonName。

這將是一個解決辦法:

$person = $account->getParty(); 
$name = $person->getName(); 
$name->setFirstName($firstName); 
$name->setLastName($lastName); 
$person->setName($name); 
$this->accountRepository->update($account); 
$this->partyRepository->update($person); 

只需設置PERSONNAME一次。

這anwser是太好:https://stackoverflow.com/a/746322/782920

PHP:引用返回:http://php.net/manual/en/language.references.return.php