2016-10-11 6 views
3

fluidcontentを使用していますので、コンテンツエレメントにプラグインをレンダリングしたいと思います。そこで私は、次のCOAを作成しました:TYPO3 - FluidからcObjectに変数を渡す

form = COA 
form { 
    15 < tt_content.list.20.extname_form 
    15.settings.id = | 
} 

このオブジェクトはcOjectのなViewHelperと流体テンプレートでレンダリングなっています。

<f:cObject typoscriptObjectPath="form" data="testId" /> 

レンダリングプロセスは正常に動作します。

問題は、COAオブジェクト内のデータ変数にアクセスできないことです。フォームテンプレートでは、変数settings.idの内容は|であり、testIdではありません。

私はvhs viewhelper request.renderでプラグインをレンダリングしようとしましたが、そこにも変数を渡すのに問題があります。

<v:render.request action="request" controller="Form" extensionName="ExtName" pluginName="Form" vendorName="VendorName" arguments="{_all}" /> 

答えて

0

データはstdWrapのの.current = 1オプションを使用して、あなたが文字列を定義する場合:

form = COA 
form { 
    15 < tt_content.list.20.extname_form 
    15.settings.id.current = 1 
} 

しかし、あなたの「extname_form」あなたは「変数」を使用する必要があり、他の設定にstdWrapのを使用する必要があります。

を設定のstdWrapの使用のための
form = COA 
form { 
    15 < tt_content.list.20.extname_form 
    15.variables.id = TEXT 
    15.variables.id.current = 1 
} 

例:

お使いのコントローラのアクションで
form = COA 
form { 
    15 < tt_content.list.20.extname_form 
    15.settings.id.current = 1 
} 

/** @var \TYPO3\CMS\Extbase\Service\TypoScriptService $typoScriptService */ 
    $typoScriptService = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Service\TypoScriptService::class); 
    $typoScriptSettings = $typoScriptService->convertTypoScriptArrayToPlainArray($this->settings); 
    $this->settings['id'] = $this->configurationManager->getContentObject()->stdWrap($typoScriptSettings['id'], $typoScriptSettings['id.']); 

今、あなたのsettings.idはstdWrapので解析され、あなたのcObjectViewHelperデータが含まれている必要があります。

+0

ありがとうございました。両方のバージョンを試しましたが、変数をフォームの流体テンプレートに渡すことはできません。 –

+0

変数にアクセスする方法に依存する '' 'extname_form'''エクステンションには何かがあるかもしれません。 "変数"の例は、 '' 'tt_content.list.20.extname_form'''がFLUID_TEMPLATEオブジェクトの場合にのみ機能します。拡張機能を知らなければ、コントローラの設定を解析してビューに割り当てる必要があります。 –

+0

私はそれを働かせることができません。また、フォームコントローラでは変数にアクセスできません。フォームプラグインもfluidtemplateで実装されています。私が最初のバージョンを使用する場合、私はテンプレート内の変数を参照してください。変数の内容が取られないという問題があります。 –

0

あなたが使用することができ、あなたの流体テンプレート内だけでいくつかの助け(多分):

<f:debug>{_all}</f:debug> 

あなたがそうでなければ、コントローラで、利用できる多くの情報を確認することができます。

\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($yourVariable); 
4

を別があります変数のグローバルレジストリを使用しています。 TYPO3には、変数の静的記憶域を意味する、いわゆる「ロードレジスタ」が含まれています。 VHSの拡張子は、そのストレージと対話するViewHelpersが含まれています

あなたの変数を追加することができ setバリアントを使用して

https://fluidtypo3.org/viewhelpers/vhs/master/Variable/Register/GetViewHelper.html

、その後、f:cObjectを呼び出し、関係なく、あなたの次の流体のテンプレートをスタックの深レンダリング内部の使用、座っていますgetバリアントは値を取得します。

たとえば、他のネストされたコンテンツ要素を持つコンテンツ要素を使用すると非常に便利です。任意のネスト深度で値を取得または再定義します。

NB:TYPO3で実行されるカスタムPHPだけでなく、TypoScriptでもhttps://docs.typo3.org/typo3cms/TyposcriptReference/ContentObjects/LoadRegister/Index.htmlを使用してアクセスできます。だから全体的には扱うのがはるかに簡単で、厳密な引数の引き渡しよりもはるかに柔軟性があるかもしれません。

関連する問題