2012-01-06 3 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 사본을 반환하기 때문입니다. 외부 ($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