0

我在 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);

这工作正常,但为什么?

4

1 回答 1

1

这是因为Person::getName()返回的是副本PersonName而不是引用。这意味着如果您在外部 ( ) 更改PersonName ,则不会在内部 ( $this->name)更新它。$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。

这个anwser也很好:https ://stackoverflow.com/a/746322/782920

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

于 2012-06-11T09:50:09.783 回答