2017-05-10 4 views
1

設定の配列が存在するかどうかをチェックし、存在する場合は引数として渡します。存在しない場合は、デフォルト設定をその部分に渡します。TYPO3流体の動的可変部分が条件の場合にインラインで

私の問題は、(THEN-ELSE以下に簡略化されている)のチェックを実行する必要がある場合、私はもし条件にこだわっていることを、次のとおりです。

{f:if(condition: settings.media.responsive{f:count(subject: records)}, then: 'true', else: 'false')} 

このようなコードは、流体によって解析されず、単にページ上にそのまま出力されます。 しかし動的部分なしで、それは完璧に動作します:

{f:if(condition: settings.media.responsive1, then: 'true', else: 'false')} 

出力true

私はすべての可能な組み合わせを試しました。つまり、条件全体を囲む一重引用符および/または中括弧だけでなく、f:count(subject)の同じ内部を試しましたが、動作させる方法が見つかりませんでした。

はAdditionaly、だけでなく、成功せずVHS拡張子からv:variable.getを試してみました:

{f:if(condition: {v:variable.get(name: 'settings.media.responsive{f:count(subject: records)}')}, then: 'true', else: 'false')} 

上記のコードは常にtrueになります。ノート

重要:settings.media.responsive[number]は設定の配列が含まれているので、conditionに一重引用符で囲んで文字列にキャストすることはできません。あなたがVHSをしたい場合

{records -> f:variable(name: 'count')} 
{f:if(condition: '{f:count(subject: \'{settings.media.responsive{count}}\')}', then: 'true', else: 'false')} 

または::

答えて

1

あなたは流体エンジンライブラリを使用している場合は、[

{f:if(condition: '{v:variable.get(name: \'settings.media.responsive{f:count(subject: records)}\') -> f:count()}', then: 'true', else: 'false')} 
+0

の問題は、私がキャストできないこと 'settings.media.responsive設定]の配列が含まれているため、[number] 'to sringを呼び出します。そして、一重引用符で囲む条件は '#1476107295:PHP警告:htmlspecialchars()はパラメータ1が文字列、/path/vendor/typo3fluid/fluid/src/Core/Parser/SyntaxTree/EscapingNode.php行に与えられた配列を要求します44 ' –

+1

ダイナミックに名前を付けた設定自体が配列であるという新しい情報を反映するように、例が更新されました。条件が動的変数参照にある配列をカウントし、countが0より大きい場合はtrueを返します。この例はnullセーフなので、動的参照がnullを返すと、悪いことは起こりません( 'else' caseトリガー)。 –

+0

ありがとう、今はvhs-partが動作しますが、純粋なFluid-wayは私を常に真にします。しかし、問題は解決されているので、回答は受け入れられます。 –

関連する問題