Nano Hash - криптовалюты, майнинг, программирование

Использование модификаторов по умолчанию

Я пытаюсь немного выйти за рамки базового использования Smarty и столкнулся с небольшой проблемой, используя модификатор по умолчанию «capitalize». Я работаю с предположением, что для использования этого оператора не требуется никаких явных вызовов, поэтому в моем шаблоне у меня есть следующее:

{* Smarty Part: Add-ins *}

<div class="control-group form-inline">
<label class="control-label">Add-ins:</label>
  <div class="controls ">
    {foreach $add_ins as $add_in}
    <label class="checkbox inline"><input type="checkbox" cf-change="toggle-field::#{$add_in}-add-in"> {$add_in|capitalize}</label>
    {/foreach}
  </div>
</div>

Если бы я заменил:

{$add_in|capitalize}

с

{$add_in}

Это будет работать нормально, но добавление модификатора дает мне следующую ошибку:

Неустранимая ошибка PHP: необработанное исключение «SmartyCompilerException» с сообщением «Синтаксическая ошибка в шаблоне [FILE_PATH] в строке 7. label class=checkbox inlineinput type=checkbox cf-change=toggle-field::#{$add_in}-add-in {$ add_in|capitalize}/label неизвестный модификатор использовать заглавные буквы'

Любая помощь будет принята с благодарностью.

22.10.2012

  • Это происходит только с модификатором заглавной буквы? 23.10.2012
  • Нет вроде бы со всеми модификаторами. Ну, по крайней мере, это происходит с верхней и большой буквы. 23.10.2012
  • для некоторого дополнительного контекста... я вызываю метод setPluginsDir() для регистрации каталога плагинов. У меня есть одна функция, и она работает. Не уверен, есть ли еще один явный вызов, который мне нужно сделать, чтобы указать на модификаторы/функции по умолчанию. Я бы не догадался, но явно что-то не так. 23.10.2012

Ответы:


1

При использовании приведенного выше кода из ken вы также можете/лучше использовать

$object->addPluginsDir(LG_FE_DIR . '/templates/plugins_dir');

и тогда вам не нужно заботиться о вещах по умолчанию.

09.01.2014

2

В вашем каталоге Smarty должен быть каталог плагинов, который содержит все плагины по умолчанию, включая обычные модификаторы.

Если вы не можете решить эту проблему, помните, что вы можете использовать любую функцию PHP в качестве модификатора. Итак, в этом случае вы можете использовать ucfirst():

{$add_in|ucfirst}

Однако это зависит от состояния $security. Подробнее см. документацию.

30.10.2012

3

Проблема возникает из-за регистрации каталога для ваших собственных плагинов и отсутствия ссылки на каталог по умолчанию. Так, например, я использовал initialise smarty примерно так:

 public static function init () {
    $object = new Smarty();
    $object->setTemplateDir ( LG_FE_DIR . '/templates/uncompiled' );
    $object->setCompileDir ( LG_FE_DIR . '/templates/compiled'  );
    $object->setCacheDir ( LG_FE_DIR . '/templates/cache' );
    $object->setConfigDir ( LG_FE_DIR . '/templates/configs' );

    return $object;
}

На данный момент я МОГУ без проблем использовать модификаторы Smarty по умолчанию. Затем я решил, что мне нужен собственный каталог плагинов, и добавил следующую строку в свой метод init():

$object->setPluginsDir ( LG_FE_DIR . '/templates/plugins_dir');

Работал отлично в том смысле, что теперь я мог вызывать свои собственные плагины, но он также сломал плагины по умолчанию (и модификаторы). Почему? Я предполагаю, что как только вы явно указываете каталог плагинов, каталог по умолчанию выходит за рамки, и поэтому вам нужно указать оба. К счастью, это легко... вы просто вставляете разные каталоги, которые хотите включить в массив. Для меня это выглядело так:

$object->setPluginsDir ( array(LG_FE_DIR . '/templates/plugins_dir', LG_FE_DIR . '/externals/Smarty/libs/plugins') );
06.11.2012
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..