2017-08-09 3 views
0

(1対多)のnホール複数のアイテムを1つの流体フォームで作成できますか?要求1::私は私のモデルで関係以下のいる

要求モデルクラスでは、私は

/** 
* num 
* 
* @var string 
* @validate NotEmpty 
*/ 
protected $num = ''; 
を持つホールモデルクラスで
/** 
* hall 
* 
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Vendor\Ext\Domain\Model\Hall> 
* @cascade remove 
*/ 
protected $hall = null; 

を持っています

複数のアイテムを1つの流体フォームに設定できますか?同様

<f:form avction="create" name="hall" object="{hall}" controller="Hall"> 
<f:form.textfield name="hall[num][]" class="form-control" /> 
<f:form.textfield name="hall[num][]" class="form-control" /> 
<f:form.submit value="Create" /> 
</f:form> 
+0

はい、可能ですが、PropertiesMapperを使用してinitializeAction(s)でサブオブジェクトの作成を許可する必要があります。ここでそれについてのドイツ語のチュートリアルがあります(あなたに翻訳してもらいたいです)。https://www.typo3lexikon.de/typo3-tutorials/core/systemextensions/extbase/property-mapper.html 最終的にはサブオブジェクトの非常に良い説明されています。 –

答えて

0

私は次の操作を行いますので、私は個人的にTYPO3の自動マッピングと格闘:

をモデルに、次のfuncsを追加

public function addHall(Hall $hall){ 
$this->hall->atach($hall) 
} 

pubflic function removeHall(Hall $hall){ 
$this->hall->detach($hall) 
} 

注:Keppを念頭に置いて、あなたがしなければならないこと$ hall alオブジェクトストレージを宣言する

コントローラに新しいホールオブジェクトを作成し、新しいホールを持続させ、addHallメソッドで追加して所望のモデルを作成し、保持することができます。

ヒント:fprが持続する良い機能があります。 PersistanceManager :: persistAll()またはs.thと似ています。そのように

+0

ありがとうございました!!!すべてが機能している –

1

あなたは解決策に近いですが、フィールドnameには適切なプラグインの名前空間がありません。

<f:form action="create" name="request" object="{request}" controller="Request"> 
    <f:form.textfield property="hall.0.num" class="form-control"/> 
    <f:form.textfield property="hall.1.num" class="form-control"/> 
    <f:form.submit value="Create"/> 
</f:form> 

あなたのルートエンティティフォームで(リクエストここ)と適切なフォームフィールドを介してすべてのリレーションを作成することが不可欠である。このため簡単に解決策があります。 propertyを使用すると、すべてのフィールドの適切な名前(プラグインの名前空間を含む)が確保されます。 name="tx_myext_myplugin[request][hall][0][num]"

各オブジェクトに数値インデックスを使用している限り、必要な数のリレーションオブジェクトを追加できます。多くのフィールドでは、f:forビューヘルパーを使用できます。

関連する問題