19

私は Twig テンプレートを使用しており、Doctrine2 エンティティ フォームを表す "form" 変数があります。

このエンティティには、フォームにマップされるプロパティがありますが、エンティティには、Twig テンプレートからアクセスしたいいくつかのメソッドもあります。

私はこのようなことをしたいと思います:

{{ form.myMethod }}

または多分このようなもの:

{{ form.getEntity.myMethod }}

しかし、残念ながらうまくいきません。

どうすれば必要なものを達成できますか?

4

8 に答える 8

34

小枝テンプレートで FormView からエンティティにアクセスするには、次のコードを使用できます

{{ form.get('value') }}

form は FormView オブジェクトです。これによりエンティティが返され、そこから任意のメソッドを呼び出すことができます。エンティティのコレクションまたは単一のエンティティをフォームに埋め込む場合、同じ方法でアクセスできます

{{ form.someembedform.get('value') }}

また

{% for obj in form.mycollection %}
  {{ obj.get('value').someMethod }}
{% endif %}
于 2011-09-09T19:50:12.007 に答える
18

代わりに基になるエンティティを取得するためのさらに便利な構文

{{ form.get('value') }}

これは:

{{ form.vars.value }}

次に、次のように任意のエンティティ メソッドを呼び出すことができます。

{{ form.vars.value.someMethod }}

Symfony2 ドキュメントのフォームの章も参照してください。

http://symfony.com/doc/current/book/forms.html#rendering-a-form-in-a-template

于 2012-02-01T13:15:05.950 に答える
15

件名を更新するためだけに:

form.get('value')

symfony 2.1 から廃止されました。Symfony\Component\Form\FormView からコピー:

/*
 * @deprecated Deprecated since version 2.1, to be removed in 2.3. Access
 *             the public property {@link vars} instead.
 */
public function get($name, $default = null) ....

だから、私は推測します

form.vars.value.youMethod()

進むべき道です。それは私から働いています。

...そして、ここに私の最初の投稿があります。それが役に立てば幸い!

于 2012-10-26T11:53:14.497 に答える
6

何が起こっているのか、そしてその理由を突き止めようとして数時間を失いました

{{ form.vars.value }}

無効です。

form.element (フォーム オブジェクト自体ではない) オブジェクトがある場合、たとえば、form.row オブジェクトを渡した form_row テンプレートをオーバーライドしている場合、次のようにエンティティを取得できます。

{{ form.getParent().vars.value.MyEntityMethod }}

それが誰かを助けることを願っています!

編集: 年以降 - 別の役立つヒント:

{% block sonata_type_collection_widget %}
    {% for child in form %}
        {{ child.vars.form.vars.value.name }}
    {% endfor %}
{% endblock %}
于 2012-08-10T23:46:19.230 に答える
3

オブジェクトメソッドは小枝で動作するはずです。いくつかのプロジェクトでそれらを使用したことは知っています。

使ってみてください()

お気に入り{{ form.myMethod() }}

于 2011-08-20T20:20:23.190 に答える
-1

使用して{{ form.getData.myMethod }}ください。

于 2011-08-20T21:01:27.873 に答える