2

設定:

  • 小枝 1.13.1
  • PHP 5.4.3

問題:

DB には 10,000 件の記事があります。X 個のストーリーのみをページに表示できるようにする方法が必要です。テンプレートを呼び出す前にコントローラーの数を制限できることはわかっていますが、その数は使用するテンプレートによって異なります。すべての記事を処理するコントローラーを 1 つ用意します。配列を制限するために、テンプレートからコントローラーに番号を渡す方法が必要です。10,000 件の記事すべてをプルダウンしてから、小枝の「スライス」フィルター/関数を使用したくありません。

私はdjangoであなたが以下を使うことができることを知っています。これにより、上位 3 つのストーリーのみが読み込まれます。

{% get_latest_stories 3 sports as story_list %}
{% for story in story_list %}
    {{ story.title }}
{% endfor %}

ここに私の現在のファイルがあります。

コントローラ

<?php
$stories = news_stories::getStories("sports",5); //getStories(section,limit);
?>

<?=$twig->render("storyList.html", array('stories' => $stories))?>

ビュー/テンプレート

{% for story in story_list %}
    {{ story.title }}
{% endfor %}

概要

DBから返される行の数を制限できるように、テンプレートからコントローラーに数値を渡す方法が欲しい

4

3 に答える 3

0

スライスフィルターを使用したい場合は、これでうまくいくと思います

http://twig.sensiolabs.org/doc/filters/slice.html

{% for story in story_list|slice(1,5) %}
    {{ story.title }}
{% endfor %}

ループの要素 1 - > 5 のみを返し、ループを中断する必要があります。このようにすることもできます

{% for story in story_list|[start:5] %}
    {{ story.title }}
{% endfor %}

免責事項: 私は実際に twig を使用したことはありませんが、これはそのドキュメントを簡単に参照しただけです

于 2013-06-26T14:55:25.363 に答える