Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
...
if (((isset($context["usertype"]) ? $context["usertype"] : null) == 2)) {
...
{% if user.troll %}
fuckoff
{% else %}
ok
{% endif %}
User::isTroll(){{ user.troll ? 'fuck off' : 'ok' }}
public function isTroll()
{
return $this->status === self::TROLL_STATUS;
}
public function isTroll()
{
return $this->hasStatus('troll');
}
public function isTroll()
{
return 100 > count($this->getLastMessages(60*60*6));
}
#!/usr/bin/env php
<?php
require 'vendor/autoload.php';
class JustForTest { }
$loader = new Twig_Loader_String();
$twig = new Twig_Environment($loader);
echo $twig->render('Hello, {{ test.notExists() }}', [
'test' => new JustForTest()
] );Twig_Error_Runtime: Method "notExists" for object "JustForTest" does not exist in "Hello, {{ test.notExists() }}" at line 1 in /Users/hell0w0rd/Desktop/test/vendor/twig/twig/lib/Twig/Template.php on line 438
strict_variables уже не так комфортно, мне кажется. Да и поздно уже его включать, когда шаблонов слишком много.{% if errors %}...{% endif %}.strict_variables не влияет на константы, а топик про них. Да и даже не особо про них, сколько поверхностно о системе расширений.errors, а может и нет — я бы определил глобальную переменную, по умолчанию пустую, а если ошибки есть — переопределять ее в скопе шаблона при передаче аргументов.$errors = [];
foreach($form as $field) {
$errors[] = $field->getError();
}
// Или
$errors = $form->getErrors();
foreach($foo as $bar) {
$arr[] = $bar;
}
{% if errors is defined %}{% if errors|default('') is empty %}userIs<Status> (или метод user.Is<Status>()) несколько напряжно может быть. Использование констант в шаблоне тут вполне оправдано, если они используются для определения что пользователю показывать, а что нет (как инфу, так и интерфейсы). А собственно что ещё в шаблоне может быть :)
Простой плагин для Twig или разворачиваем константы