我在Flow3的安全帐户/派对模块中遇到问题。
我试图将一个人的名字和姓氏改为派对:
$person = $account->getParty();
$name = $person->getName();
$name->setFirstName($firstName);
$name->setLastName($lastName);
$this->accountRepository->update($account);
$this->partyRepository->update($person);
$ account是有效的\TYPO3\FLOW3\Security\Account
对象。
使用此代码并更改$ firstName和$ lastname时,flow3正在进行回滚。
我找到了解决方法:
$personName = new \TYPO3\Party\Domain\Model\PersonName('', $firstName,'', $lastName);
$person->setName($personName);
这是正常的,但为什么??
答案 0 :(得分:1)
这是因为Person::getName()
会返回PersonName
的副本,而不是引用。这意味着如果您在外部($this->name
)更改了PersonName,则$person
内部($name
)不会更新。
这将是一个解决方案:
$person = $account->getParty();
$name = $person->getName();
$name->setFirstName($firstName);
$name->setLastName($lastName);
$person->setName($name);
$this->accountRepository->update($account);
$this->partyRepository->update($person);
再次设置PersonName。
这也很好:https://stackoverflow.com/a/746322/782920
PHP:通过引用返回:http://php.net/manual/en/language.references.return.php