scylabs/hook-bundle

为 symfony 提供模板和功能钩子

安装数: 3,282

依赖者: 2

建议者: 0

安全: 0

星标: 7

关注者: 2

分支: 0

公开问题: 0

类型:symfony-bundle

1.0.6 2020-12-31 11:05 UTC

This package is auto-updated.

Last update: 2024-09-29 05:55:30 UTC


README

symfony 的动态模板钩子系统。

安装

要安装此包,请使用 Composer

composer require scylabs/hook-bundle

使用方法

操作非常简单。首先,您需要在模板中创建入口点,然后将 PHP 类连接到这些入口点。
我将详细解释。

在 twig 中创建一个连接钩子的入口点

好吧,在接下来的教程中,我们将说“入口点”是一扇门。
您可以使用此包中提供的 TwigExtension。
扩展函数有两个参数。

public function showHook(string $template,string $hookName)

第一个参数是目标模板名称空间。例如:layout.html.twig
第二个参数是钩子名称,用于将 PHP 类连接到这扇门。

您可以在第一个参数中发送 _self。_self 是当前模板名称空间
添加 "raw" 过滤器以解释钩子的 HTML 是很重要的。

{{ showHook(_self,'my_custom_hook')) | raw }}

您不使用 twig 吗?

如果您不使用 twig,可以直接告诉 HooksFounder 服务。
它的工作方式与扩展完全相同,只是它直接返回实例化后的钩子对象数组,而不是钩子内容。

将钩子连接到入口点(门)。

您可以创建无限数量的门和无限数量的钩子来连接这些门。
要将钩子连接到一扇门,您需要创建一个扩展 AbstractHook 类的 PHP 类
这是将钩子连接到门的最低代码。PS:您可以将一个钩子连接到多个门。

<?php

namespace App\Hook;


use ScyLabs\HookBundle\Model\AbstractHook;

class MyHook extends AbstractHook
{

    // name of the doors where the hook will be injected
    public function getNames(): array {
        return [
            'my_custom_hook'
        ];
    }

    // A priority 0 hook will be placed before a priority 1 hook
    public function getPriority(): int {
        return 0;
    }

    // Hook result. The result are injected in door template. You can also do anything you sant in this function.
    public function showHook() {
        // $this->render() controller function equivalent.
        return $this->render('hook/menu.html.twig',[]);
    }
}

最后一步:将您的钩子目录添加到容器

# config/services.yaml
services: 
    App\Hook\:
        resource: '../src/Hook/*'
        public: true

完成了。

您还可以在 SymfonyToolbar 的控制器结果中显示任何钩子。

贡献

欢迎拉取请求。对于重大更改,请首先打开一个问题来讨论您想要更改的内容。

请确保根据需要更新测试。

许可证

MIT