Я понимаю, что может возникнуть некоторая путаница в том, какие методы использовать. В настоящее время есть много способов сделать это, и все, что вы пробовали, должно сработать.
В грядущей версии 2 Timber мы пытаемся унифицировать это и откажемся от некоторых методов, которые все еще существуют. Итак, вот как вы должны это делать с этого момента.
Обновление, март 2020 г.. Мы обсуждали, как должен понравиться новый API для 2.x, и нашли решение, которое в значительной степени исправлено. Там кое-что изменится, вы можете проверить этот pull request, если хотите узнать больше. .
А пока вот наш рекомендуемый способ действий:
Получите одно сообщение
<удар>
$post = new Timber\Post();
$post = Timber::get_post();
Получите коллекцию сообщений
<удар>
$post = new Timber\PostQuery();
$post = Timber::get_posts();
Если вы хотите использовать нумерацию страниц в своих сообщениях, вам все равно придется использовать Timber\PostQuery
:
$post = new Timber\PostQuery();
(В Timber 2.x Timber::get_posts()
будет работать с разбиением на страницы, но пока не в 1.x.)
Стандартный цикл
Я видел, что в index.php $ context ['post'] настраивается с помощью new Timber \ PostQuery (). Это в основном воспроизводит стандартный цикл иерархии шаблонов?
Да!
Фактически, если вы не передаете никаких аргументов в PostQuery()
, вам даже не нужно устанавливать $context['posts']
, потому что Timber сделает это за вас в Timber::get_context()
.
index.php
<?php
use Timber\Timber;
$context = Timber::get_context();
Timber::render( 'index.twig', $context );
Используйте имена классов в пространстве имен
В настоящее время вы все еще можете видеть TimberPost()
вместо Timber\Post()
. Для версии 1 все классы Timber были распределены по именам, поэтому рекомендуется использовать для этого имена классов с именами в PHP, например Timber\Term
вместо TimberTerm
.
Но! В Twig вы все равно будете использовать версию без пространства имен:
{% set post = Post(post_id) %}
or
{% set post = TimberPost(post_id) %}
Надеюсь, это проясняет ситуацию.
person
Gchtr
schedule
21.01.2018