1

私が取り組んでいるプロジェクトでは、ウェブサイトに最新のニュース記事を5つ表示する必要があります。コントローラーで、次のコードを記述しました。

      $news = $repository->createQueryBuilder('p')
          ->Where('p.contenttype = :type')
          ->setParameter('type', 'newsarticle')
          ->orderBy('p.lastedit', 'ASC')
          ->getQuery();

      $latestnews = $news->getResult();

エラーメッセージが表示されるため、これは何らかの理由で機能しません。

「Array」のアイテム「url」は、34行目の「ShoutMainBundle:Default:page.html.twig」に存在しません。

ただし、に変更するgetResult();getSingleResult();機能しますが、表示されるのは1つのレコードのみです(これは、そのコードを使用するときに期待するものです)。

これは、私が何をすべきかについて行き詰まり、混乱しているところです。「symfonyで複数のレコードを表示する方法」をグーグルで検索しましたが、答えが見つかりませんでした。(答えが出ている場合は、事前にお詫び申し上げます)。通常のPHPでは、必要な結果を得るためにforeachループ(とにかく似たようなもの)を実行することを期待します。しかし、私はまた、私が望むことを達成するために、Twigで何かをする必要があると感じています。しかし、私が何をする必要があるのか​​わかりません。

これに関する助けをいただければ幸いです。

ありがとう

編集: これを表示するために使用されるテンプレートコードは次のとおりです。

            <section id="latestnews">
            <h2>Latest News</h2>
            <ul>
                <li><a href="..{{ news.url }}" title="Read {{ news.title }}" />{{ news.title }}</a></li>
            </ul>
        </section>
4

3 に答える 3

3

コードは変数 から読み取ろうnewsとし、この変数にはフィールドurlとがあると想定しますtitle。コントローラーが配列を返す場合、配列newsとして処理し、それを反復処理する必要があります。

<section id="latestnews">
  <h2>Latest News</h2>
  <ul>
  {% for news in latestnews %}
   <li><a href="..{{ news.url }}" title="Read {{ news.title }}" />{{ news.title }}</a></li>
  {% endfor %}
  </ul>
</section>
于 2011-08-22T11:41:49.030 に答える
1

テンプレートのように見えますが、見つからないオブジェクトを探しています。配列オブジェクトで URL を探していますが、存在しません。配列に存在するかどうかを確認し、存在する場合はエコーする必要があると思います。if(news.url) echo news.url; のようなものです。

それは明らかに正確な構文ではないかもしれません.私は小枝に精通しているわけではありませんが、それに似たものです.

于 2011-08-22T11:21:18.260 に答える
0

Twig で「ニュース」結果配列をループする必要があります。

{% for n in news %}

    <li><a href="..{{ n.url }}" title="Read {{ n.title }}" />{{ n.title }}</a></li>

{% endfor %}
于 2011-08-22T11:43:05.503 に答える