2016-10-29 7 views
0

expertisesというプロパティを持つオブジェクトappointmentがあります。
Expertiseの重要な特性の1つは、ブールcheckedです。私は私のAppointmentControllerで何をしたいのか空白および/またはObjectStorageオブジェクトのフィルタ

は次のとおりです。最初のアクションで

  1. :(私はちょうど私が何かを追加することができ、空ObjectStorageをしたい、NULLに設定していないappointmentのプロパティexpertisesを空にする後)
  2. 第2動作では:異なるオブジェクトから(expertisesappointmentを埋める)、そのプロパティcheckedtrue
に等しいです

空から始めるには、回答をhereから見ましたが、それは私のためには機能しませんでした。

$appExp = $appointment->getExpertises(); 
foreach ($appExp as $exp) { 
    $appExp->detach($exp); 
}  
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($appointment); 

しかし、それはすべてのexpertisesappointmentに残っていることを示しています
これは私が試したものです。私はこれを行う2番目のアクションで

foreach ($expertises as $expertise) { 
    if ($expertise->getChecked()) { 
     $appointment->addExpertise($expertise); 
    } 
} 

それは動作しますが、自動的にchecked値をフィルタリングし、ObjectStorageオブジェクトを返すことができます簡単に「フィルタ」機能があります場合、私は疑問に思います。この方法では、私はちょうどsetExpertises()を使用することができ、古いものは上書きされ、最初のステップが不要になります。

誰かがObjectStorageオブジェクトの空きとフィルタリングのアイデアを持っていますか? ObjectStorage Class referenceにちょっと見えましたが、それを空にする明白な機能はありません(のオブジェクトは現在のストレージの別のストレージに含まれています)、フィルタ機能もありません。

+0

少なくとも、ObjectStorageを空にするには、新しいオブジェクトを作成して使用してください。このソリューションをsetExpertiseのようなObjectStorageゲッターに使用することはよくあります。新しいStorageを関数に渡すだけです。しかし、数日前、私はこのソリューションがうまくいきませんでした。 –

+0

このように作成することも、別の方法で改善することもできますか? (私は、Typo3でオブジェクトをインスタンス化するためのさまざまな方法について読んだ後、ちょっと混乱します) '$ emptyStorage = new \ TYPO3 \ CMS \ Extbase \ Persistence \ ObjectStorage();' –

答えて

1

オブジェクトストレージからすべてのオブジェクトを削除する簡単な方法があります:フィルタリング用として

$appointment->getExpertises()->removeAll($appointment->getExpertises()); 

:あなたはすでに気づいたとして、あなたはそれを自分で行う必要があります。モデルにはgetActiveExpertisesのような関数を実装します。なぜなら、コントローラに比べてはるかに優れているからです。

関連する問題