Обновить
28
Никита Гусаков@hell0w0rd

Пользователь

12
Подписчики
Отправить сообщение
Омг. У вас будет ошибка, что twig не нашел свойства blabla, методов has, is.
Еще раз, логика модельки остается логикой модельки, а ее свойства узнаются через методы.
Вы пишите
{{ 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));
}
Как раз правильно в модель выносить подобные проверки, чтобы не сверяться с константами. Как минимум это способствует сохранности чистоты в шаблонах и выносу логики. Оставили метод isBlabla и потом проверяете. Можете убрать константы, отрефакторить 10 раз, а isBlaBla всегда будет работать, а если нет — ошибку тут же увидите
Нельзя так делать. Шаблоны перекомпилируются по времени их изменения, а не по изменению классов, которые использует шаблон.
Я бы такой шаблон написал так:

{% if user.troll %}
    fuckoff
{% else %}
    ok
{% endif %}

И соответственно метод User::isTroll()
А вот на счет проверки — да, хорошая штука. Вроде как уже PR есть скоро в ядре подобная проверка будет
Громко называть twig наследником смарти)
Twig uses a syntax similar to the Django and Jinja template languages which inspired the Twig runtime environment.

Тот факт, что синтаксис схож говорит лишь о том, что это удобный синтаксис, стандарт дефакто)
Даже в простых вещах, как вывод значения переменной не знаю как в смарти, а в твиге все очень круто сделано.

{{ user.status }}

Тут твиг пройдется по стеку возможных использований: массив, объект с открытым полем, геттер. Если такая конструкция используется в условии — проверит has/is.
А еще фильтры… В php не все объекты, так что user->getStatus()->ucfirst() не получится. А что если нужно использовать несколько функций? А как разделить логику получения свойства от логики ее изменения? В шаблоне все четко понятно:

<?= ucfirst(e($user->getStatus())); ?>

{{ user.status | e | capitalize  }}
Специальная маска “msie6” (0.7.12) соответствует регулярному выражению “MSIE [4-6]\.”, но работает быстрее. Начиная с версии 0.8.11, из этой маски исключается “MSIE 6.0;… SV1”.

nginx.org/ru/docs/http/ngx_http_gzip_module.html
А вам интересно развивать проект?)
Я не помню где, но видел идею, или реализацию. В общем смысл такой, пишем в шаблонизаторе
{{ asset('css://vendor/bootstrap/bootstrap.less') }}
{{ asset('css://vendor/some_lib/lib.styl') }}

Ну и так далее) Смысл в том, что выходной формат определяется схемой пути
Ну вот не надо гнать на библиотеку за кол-во кода который надо написать чтобы подключить зависимости) В твиге родная функция assetic-а ни разу не удобная, приходится писать аж 3 строки, чтобы подключить файл применив к нему фильтр.

Просто на мой взгляд адаптировать assetic под проект было бы выгоднее и быстрее, чем писать это) Учитывая наличие плагина под смарти github.com/pjparra/assetic-smarty
Советую вам посмотреть на assetic. Из плюсов — оттестирован, совместим с композером, мощнее, много предустановленных фильтров
Ага, а вы представьте что у вас появилась какая-то гениальная идея — то что люди даже вообразить себе не могли. А теперь попробуйте без вклада денег в это нечто раскрутить это так, чтобы каждый человек хотел иметь это что-то. Open source для гиков и в ближайшее время будет им.
Скажите, а планируется ввод на уровне IDEA поддержки редактирования с нескольких позиций курсора одновременно? Переодически ради этой фичи приходится в саблайм копировать кусок кода.

Может вы по больше деталей расскажите? Ваш пост поместился в твитт
Поверю. Передавайте привет этим хостингам)
Примечание: во всех файлах PHP, которые делаются для работы под управлением этой CMS, необходимо первой строкой включать следующий код:
<?php  defined('C5_EXECUTE') or die("Access Denied.");

Шел 2013 год…
Зачем вы делаете программирование на соглашениях? Есть же неймспейсы. А что если мне нужно 2 контроллера?
И вообще, зачем нужен этот модуль? Почему не написать просто <hr />?
неужели ctr+p/n удобнее стрелочек?
есть propel 2 кстати)
Ничего не понял, можно в коде пример привести? Вы имеете ввиду что $user->setGroup($group) а потом нужно $group->addUser($user)?
Я целиком и полностью за дата-мэппер, и юзаю доктрину) Но я все это пишу к тому, что AR по этим аргументам никак не проигрывает DM.
DM на мой взгляд идеологически более правильна, но к сожалению доктрина тяжела и потому думаю не особо распространена.

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность