Как добавить тест на веточку в October CMS?

#octobercms #twig-extension

Вопрос:

Это хорошо работает в моей функции registerMarkupTags.

             'functions' => [
                'isNumeric' => function($value) { return is_numeric($value); }
 

Чтобы я мог писать:

 {% if isNumeric(result) %}
 

Я хочу сделать это тестом, например

 {% if result is numeric %}
 

Комментарии:

1. Привет, вы можете проверить относительную помощь здесь : tutorialmeta.com/october-cms/… , я также добавлю ответ

Ответ №1:

Вы можете добавить пользовательское расширение для twig

Источник: https://tutorialmeta.com/october-cms/october-cms-extend-custom-twig-markup

Добавьте приведенный ниже код в свой plugin.php файл

 // other imports
use TwigExtensionAbstractExtension as TwigExtension;

// our extension class 
// you can declare here inside plugin.php file or in your `pluginclasses` file
// for simplicity we have declared it here

class MyTwigExtension extends TwigExtension {
    public function getTests() {
        return [
            new TwigTwigTest('numeric', function ($value) {
                return is_numeric($value);
            })
        ];
    }
}

class Plugin extends PluginBase {
    public function boot() {
        Event::listen('cms.page.beforeDisplay', 
            function ($controller, $url, $page) {
                $controller->getTwig()->addExtension(new MyTwigExtension);
            }
        );
    }
    // other code
}
 

Теперь из вашей разметки

 {% if 12 is numeric %}
    yes numeric.
{% else %}
    not a numeric.
{% endif %}
 

если у вас есть какие-либо сомнения, пожалуйста, прокомментируйте.