我以前为 Zikula 模块做过这个,但我一定忘记了一些东西。我记得,如果您想为表单提供服务,您必须执行三个步骤。
首先,在您的模块中创建一个名为 DependencyInjection 的文件夹。在其中创建一个使用 YAML 加载器加载 YAML 文件的 php 类。这是代码:
class PaustianPMCIModuleExtension extends Extension
{
public function load(array $configs, ContainerBuilder $container)
{
$loader = new YamlFileLoader($container, new FileLocator(realpath(__DIR__ . '/../Resources/config')));
$loader->load('services.yml');
}
}
其次,在模块的 Resources/config/ 文件夹中创建一个 services.yml 文件。第三,在该 services.yml 文件中有你的 yml 来配置服务。这是那个文件:
services:
paustian_pmci_module.container.link_container:
class: Paustian\PMCIModule\Container\LinkContainer
arguments: ["@translator.default", "@jms_i18n_routing.router", "@zikula_permissions_module.api.permission"]
tags:
- { name: zikula.link_container }
paustian_pmci_module.person_type:
class: Paustian\PMCIModule\Form\Person
arguments: ["@translator.default"]
tags:
- { name: form.type }
现在根本没有调用 PaustianPMCIModuleExtension 类的加载函数。我确实清除了捕获以强制重新加载所有内容。我知道我错过了一些愚蠢的东西,但我似乎看不到它。