2017-01-16 19 views
1

かなり重いロジックのみのコードを数回再利用したいのですが、PHPでは関数を使用しますが、小枝ではthis old questionのソリューションを使いました。要するにTwig_Markupオブジェクト型をIf文で使用する方法

、私はそのようなマクロを使用します。ここでは

{% import _self as test %} 

{% macro check() %} 
    {{ test }} 
{% endmacro %} 

{% set v = test.check() %} 
{% if v == 'test' %} 
    this should display 
{% endif %} 

はフィドルです:https://twigfiddle.com/kyv3zr/2

問題は、vはTwig_markupオブジェクトであるということです。それは公共の財産を持っていないようです。ダンプを実行すると、次のようになります。

object(Twig_Markup)#1244 (2) { ["content":protected]=> string(13) " 1 " ["charset":protected]=> string(5) "UTF-8" } 

if文でどのように使用しますか?

また、テンプレート間で再利用するためのロジックのみのコードを保存する方法がありますか?しかし

{% if v.content == '1' %} 
    {# do something here #} 
{% endif %} 

ない特定の、それを試してみてください。

+0

私は重要な質問をしています。回答する前にそれらについて考える:実際に何をしたいのですか?達成したい最終結果は何ですか?私は今マクロが何をしているかを見ていますが、あなたが必要とするものを何でもすることができます - そして、あなたが必要とする最終結果が何であるか分かりません。たとえば、生成するHTMLコード、またはサンプル画像を表示できますか?あなたのインプットは何ですか?あなたのアウトプットは何ですか? –

答えて

0

オブジェクトがv呼び出された場合、ダンプは、それがcontent値を持って示し、そうしようとしているようです。

EDIT#2 - コメントに基づいて質問します。 だから私はあなたがif文でvを使用する場合、あなたはそのようにそれを使用することになり推測:

{% if v == '1' %} 
    {# do something here #} 
{% endif %} 

これは、それが「1」に等しいん前提としています。

+0

はい、プロテクトされていますが、プロパティ "content"やメソッド "content()"、 "getcontent()"/"iscontent()"、 "__call()"のいずれも存在しません。クラス "Twig_Markup"にパブリックアクセスがあります – Lukigi

+0

Doctrineエンティティコードを投稿できますか?あるいは、あなたはDoctrineを使用していませんか?またはあなたの投稿に表示されているオブジェクト 'v'を作成するために使用するコードです。 –

+0

質問に文脈を追加しました – Lukigi

関連する問題