1

私は次の飛行をした実体を持っています:

/**
 * @ORM\ManyToOne(targetEntity="Document", inversedBy="posts")
 * @ORM\JoinColumn(name="document_id", referencedColumnName="id")
 */
protected $image;

これは次の方法で取得します。

public function indexAction() {
    $posts = $this->getDoctrine()
            ->getRepository('airpaprcms2Bundle:Post')
            ->findByPageType(1);

    if (!$posts) {
        throw $this->createNotFoundException('No posts in Database!');
    }

    return $this->render('airpaprcms2Bundle:Default:index.html.twig', array('posts' => $posts));
}

小枝内のマップされたオブジェクトフォームのプロパティにアクセスするにはどうすればよいですか?試しpost.image.fileました(マップされたエンティティドキュメントにはプロパティファイルがあります)

{% for post in posts %}
<div>
    <h1>
        <a href="{{ path('_view', {'slug': post.slug}) }}">{{ post.title }}</a>
    </h1>
    <p>{{ post.text }}</p>
    <img src="{{ post.image.name }}" alt="{{ post.title }}" />
</div>
{% endfor %}

次のエラーメッセージが表示されます。

Item "file" for "" does not exist in airpaprcms2Bundle:Default:index.html.twig at line 11

マップされたドキュメントプロパティにアクセスするための正しい構文は何ですか?

4

1 に答える 1

3

次の twig 構文を使用して、リンクされたエンティティのプロパティにアクセスできます。

{% for post in posts %}
{{ post.entityName.propertyName }}
{% endfor %}

あなたの場合、それは次のようになります:

{% for post in posts %}
{{ post.image.propertyName }}
{% endfor %}

すべての投稿エンティティが画像オブジェクトにリンクされていることを確認してください。1 つの投稿エンティティに画像へのリンクがない場合、ページをレンダリングしようとすると、プロパティが見つからないというエラーが発生します。

于 2012-12-11T19:35:51.867 に答える