我有一個對象appointment
,其屬性expertises
的類型爲\TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Vendor\Extname\Domain\Model\Expertise>
。
另外Expertise
的一個重要特性是bool checked
。空的和/或過濾器ObjectStorage對象
我想在我的AppointmentController做的是:
- 在第一個動作:清空
appointment
的財產expertises
(未將其設置爲NULL
,我只想一個空ObjectStorage
,我可以補充一下稍後) - 在第二動作:填充
appointment
與expertises
(從一個不同的對象),其屬性checked
等於true
爲了從清空開始,我查看了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)沒有明顯的作用。
嗯,至少要清空ObjectStorage只需創建一個新的,使用它。通常使用ObjectStorage getter這個解決方案,比如setExpertise - 只需要給這個函數一個新的存儲空間。但是前幾天我看到過有人對這個解決方案不起作用。 –
我可以像這樣創建它,還是以另一種方式更好? (我有點困惑閱讀許多不同的方式來實例化對象Typo3的後)'$ emptyStorage =新\ TYPO3 \ CMS \ Extbase \持久性\ ObjectStorage();' –