我在Flow3的安全帐户/参与方模块中遇到问题。
我曾尝试将一个人的名字和姓氏更改为Party:
$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);这是正确的,但是为什么呢??
发布于 2012-06-11 17:50:10
这是因为Person::getName()返回的是PersonName的副本,而不是引用。这意味着如果在外部($name)更改PersonName,则不会在$person的内部($this->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即可。
这个anwser也很不错:https://stackoverflow.com/a/746322/782920
PHP:通过引用返回:http://php.net/manual/en/language.references.return.php
https://stackoverflow.com/questions/8759747
复制相似问题