\TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Vendor\Extname\Domain\Model\Expertise>
의 expertises
속성을 가진 appointment
개체가 있습니다.
Expertise
의 중요한 속성 중 하나는 bool checked
입니다.빈 개체 및/또는 ObjectStorage 개체 필터
내가 내 AppointmentController에하고 싶은 것은 :
첫 번째 액션에서- : (난 그냥 내가 뭔가를 추가 할 수있는 빈
ObjectStorage
원NULL
로 설정하지appointment
의 특성expertises
비우기 이상) - 제 행동한다 : 그 속성이
checked
true
expertises
으로
appointment
채우기
비우기로 시작하려면 here에서 답을 보았지만 나에게 도움이되지 못했습니다.
$appExp = $appointment->getExpertises();
foreach ($appExp as $exp) {
$appExp->detach($exp);
}
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($appointment);
그러나 모든 expertises
이 appointment
여전히 있음을 보여줍니다
이것은 내가 뭘하려합니다. 두 번째 동작에서
foreach ($expertises as $expertise) {
if ($expertise->getChecked()) {
$appointment->addExpertise($expertise);
}
}
그것은 작동하지만 자동으로 checked
값을 필터링하고 ObjectStorage
객체를 반환 할 수 있습니다 쉽게 "필터"기능이 있는지 궁금합니다. 이 방법을 사용하기 때문에 나는 단지 setExpertises()
을 사용할 수 있으며 오래된 것들은 첫 단계를 불필요하게 만들 것입니다.
누군가가 ObjectStorage
개체를 비우거나 필터링하는 아이디어가 있습니까? ObjectStorage Class reference을 조금 보았지만 비우는 기능이 없습니다 (removeAll
ist는 현재 스토리지의 다른 저장소에있는 개체를위한 것으로 필터 기능도 없음). 필터링으로
$appointment->getExpertises()->removeAll($appointment->getExpertises());
:
음, 적어도 ObjectStorage를 비우는 것만으로 새 Object를 만들고 사용하십시오. 종종이 솔루션을 setExpertise와 같은 ObjectStorage getter에 사용합니다. 함수에 새 Storage를 지정하기 만하면됩니다. 그러나 며칠 전이 솔루션을 사용할 수없는 사람을 만났습니다. –
이렇게 만들거나 다른 방법으로 개선 할 수 있습니까? (나는 Typo3에서 객체를 인스턴스화하는 여러 가지 방법에 대해 읽은 후에 약간 혼란 스럽다.) $ emptyStorage = new \ TYPO3 \ CMS \ Extbase \ Persistence \ ObjectStorage(); –