Например, в Древесина Документация у нас есть много примеров, таких как следующие:
{% for item in menu.items %}
{{ post.author.name }}
Теперь «вещь«а»меню«и т. д. все предопределены и нигде не определены пользователем в файлах (иначе, по моему пониманию, Timber и TWIG не имели бы большого смысла).
То, что я не понимаю, это где я могу найти список этих. В Docs of Timber есть множество примеров, затем, когда я сравниваю их с темой Timber Starter для WordPress, я вижу их несколько, которые даже не упомянуты в документации.
Не чувствую себя глупым, потому что вы не чувствуете! Мы все были там. У меня были те же вопросы, когда я начал с Timber. Мы пытаемся постоянно улучшать документацию, поэтому подобные вопросы помогают нам понять, что мы можем сделать лучше ».
Всякий раз, когда вы видите переменную в Twig, она может происходить из нескольких разных мест:
Существует фильтр, который большинство из нас использует, чтобы сделать переменную доступной глобально, когда вы настраиваете свой контекст через Timber::get_context()
, Когда ты видишь {% for item in menu.items %}
, то это, вероятно, из раздела документов о «Настройка меню глобально». Я должен признать, что мы объясняем фильтр только в этом примере, что не идеально. Но мы меняем это. В следующей версии Timber мы пытаемся лучше объяснить глобальный контекст (не забудьте прочитать только раздел о глобальном контексте, потому что часть «Шаблонные контексты» описывает функциональность, которая пока недоступна.)
Рассмотрим следующий пример:
$context = Timber::get_context();
$context['post'] = new Timber\Post();
Timber::render( 'single.twig', $context );
Здесь вы настраиваете свой контекст через Timber::get_context()
, Когда вы используете Timber::get_context()
вы получите кучу переменных, которые имеют смысл в глобальном масштабе, но не для каждого шаблона.
$context
переменная — это массив, содержащий все переменные, которые вы хотите передать в шаблон Twig, в данном случае single.twig. Когда можно добавить наши собственные переменные, как в примере выше, где мы добавляем post
которые держат Timber\Post
объект текущего отображаемого сообщения.
В шаблоне, когда вы видите {{ post.author.name }}
, затем author
могут быть разные вещи:
Timber\Post
объект, который содержит значение. Это все переменные, которые вы увидите, когда будете делать {{ dump(post) }}
,Timber\Post
объект, который будет освобожден. Поначалу это может сбивать с толку, потому что в PHP вам всегда нужно добавлять фигурные скобки для вызова функции, но в Twig вам это не нужно. Когда вы звоните $post->author()
в PHP вы бы использовали post.author
в ветке Чтобы увидеть список всех методов, которые доступны для Timber\Post
, вам нужно заглянуть в справочный раздел для Timber\Post
в документах.Так что, если бы вы написали пример {{ post.author.name }}
в PHP это будет выглядеть так:
$post->author()->name()
Так author
это метод Timber\Post
, который возвращает Timber\User
объект. Timber\User
Объект имеет метод с именем name
, который возвращает «понятное человеку имя пользователя».
Но! Когда вы просто смотрите на {{ post.author.name }}
, это также может быть многомерный массив, который вы определили сами:
$context['post'] = array(
'author' => array(
'name' => 'Tom Riddle',
),
);
Вы не узнаете об этом, просто взглянув на него в Twig.
Когда ты видишь {% for item in menu.items %}
то вы перебираете переменную menu.items
, Переменная menu
вероятно происходит из глобального контекста ( Timber\Menu
объект) и items
является свойством этого объекта. item
Переменная является новой переменной, которая создается для доступа к текущему элементу цикла в для цикла. В этом примере это текущий пункт меню. Вы можете выбрать любое имя для item
ты хочешь.
Вы можете передать переменную в Twig через включают заявление. Например, если вы определили post
через ваш файл шаблона и хотите использовать другое имя в шаблоне, который вы включаете, вы можете использовать его следующим образом:
{% include 'teaser.twig' with { teaser: post } %}
Возвращаясь к вашим конкретным вопросам:
- Где я могу найти список всех доступных предметов?
- Какая логика стоит за этими предметами?
Боюсь, что нет определенного списка, потому что переменная может быть очень динамичной. В основном это сочетание глобального контекста, переменных, которые вы устанавливаете из шаблона, методов и свойств из Лесоматериалы а также переменные, которые вы определяете сами в Twig.
Если у вас есть дополнительные вопросы, добавьте этот ответ в качестве комментариев, и я могу соответствующим образом обновить этот ответ.
Других решений пока нет …