Open adinvadim opened 8 years ago
Думаю тут ответят как правильно передать функцию. Но интересно почему бы не делать это на сервере? Все равно же данные приходят от сервера?
Например мне пришло кол-во комментариев и в зависимости от кол-во ставить нужное окончание у слова "комменатрий"
@adinvadim для склонения слов в зависимости от числительных я бы предложил воспользоваться i18n.
А ответ на исходный вопрос зависит от того, может ли эта функция потребоваться и вне шаблонов. Если да, то можно положить ее в отдельный модуль и подключить через https://ru.bem.info/tools/bem/enb-bemxjst/readme/#Подключение-сторонних-библиотек
А если функция нужна исключительно в шаблонах, то ее стоит добавлять так:
// util.bemhtml.js
oninit(function(exports) {
exports.BEMContext.prototype.utilFunction = function() {
// ...
}
});
В результате эта функция будет доступна из всех шаблонов через this.utilFunction();
А в bh такое не планируется?
@kompolom В BH это есть: https://ru.bem.info/tools/bem/enb-bh/readme/#Особенности-работы-пакета
@tadatuta Понял, огромное спасибо!
@tadatuta Круто, как-то упустил. @zxqfox А в bh-php тоже есть такая возможность?
@kompolom Есть такое: https://github.com/bem/bh-php/blob/82cd0e1c3f7d67878c0bc7a82d413e73957f34dc/src/BH.php#L28-L38 А что ты туда положишь — на свой страх и риск ;-)
UPD: В технологии enb-bh-php, по аналогии с js, можно сделать, никто не просил. Только надо определиться что мы указываем, и что складываем. В пхп же нет модулей как таковых, кроме composer, где модули подключаются через php-неймспейсы. В общем, смысл этого всего не ясен.
@zxqfox смысл: есть функция которая используется в нескольких шаблонах. Хочется вынести ее куда-нибудь
@kompolom Я бы туда что-то такое положил: DependencyInjection
А там уже хоть функцию, хоть трава не расти
UPD: Но можно и просто
$bh->lib = [];
$bh->lib['myfunc'] = function() { echo "That's all, Folks!" . PHP_EOL; };
Допустим есть функция
someFunc
которая принимает строку, и возврщает модифицированную строку, как мне ее внеднрить в свои шаблоны? Если можно отдельным блоком, то как лучше это сделать? Или же если дбавлять метод к контексту (this.someFunc
) то где лучше его объявить?