如何在October CMS中创建自己的函数?

时间:2018-10-23 06:03:33

标签: laravel octobercms

“全局”是指我可以在页面和布局上的任何地方调用的函数,而无需在我应该使用它们的每个地方重复使用

3 个答案:

答案 0 :(得分:0)

在这里尝试注册功能

\System\Classes\MarkupManager::instance()->registerCallback(function($manager){
    $manager->registerFunctions([
        'myFunction' => function($param1){
            return "Hello " . $param1;
        },
    ]);
]);

在布局页面调用中

{{ myFunction('world!') }}

用于laravel中的全局功能

  

在应用程序文件夹app/helpers.php中创建helpers.php文件

if (! function_exists('showMessage')) {
    function showMessage($message = null)
    {
        return $message;
    }
}
  

添加composer.json文件以自动加载

"autoload": {
    "files": [
        "app/helpers.php"
    ],
    "classmap": [
        "database/seeds",
        "database/factories"
    ],
    "psr-4": {
        "App\\": "app/"
    }
},

转储作曲家

composer dump-autoload

要了解更多信息,请阅读此tutorial

答案 1 :(得分:0)

创建全局函数文件是直接从作曲家自动加载。

  1. 创建一个functions.php文件,在本示例中,我们将在app/Helpers内部创建它。

  2. 添加功能

    <?php
    function global_function_example($str)
    {
       return 'A Global Function with '. $str;
    }
    
  3. composer.json部分的autoload中添加以下行:

    "files": ["app/Helpers/functions.php"]
    
  4. 运行composer dump-autoload

您现在可以在应用程序中的任何位置访问 global_function_example('hello world')表单,这是一种方便的方法来检入blade file

{{ global_function_example('hello world') }}

答案 2 :(得分:0)

您可以创建自己的自定义插件,并在Plugin.php中使用registerMarkupTags

public function registerMarkupTags()
{
    return [
        'functions' => [
            'currentUrl' => function () {
                return request()->getRequestUri();
            },
            'currentUrlFull' => function () {
                return URL::to(request()->getRequestUri());
            },
            'ip' => function () {
                return Request::ip();
            }
        ]
    ];
}