自动写入 services.yml 文件
Write automatically in services.yml file
我想创建一个 php class,它根据我的实体(在服务器 运行 上或使用命令)在 services.yml 文件中自动写入服务.是否可以这样做,还是我应该只使用文件系统来做?
可以,但新创建的服务将在下一次请求之前不可用。
检索捆绑包的 services.yml
:
// src/AcmeBundle/Controller/DefaultController.php
$kernel = $this->get('kernel');
$servicesPath = $kernel->locateResource('@AcmeBundle/Resources/config/services.yml');`
或者您的应用程序的全局 services.yml
:
$servicesPath = $kernel->getRootDir().'/config/services.yml';``
将您的新服务写入:
$parser = new \Symfony\Component\Yaml\Parser();
$dumper = nrw \Symfony\Component\Yaml\Dumper();
// Get the services already configured, use the path of 'services.yml' retrieved from bundle/application
$oldServices = $parser->parse($servicesPath);
$newService = array('your_service_name' => array(
// Here your arguments, tags, ...
);
$mergedServices = array_merge($oldServices, $newService);
$yamlServices = $dumper->dump($mergedServices);
// Write all in the configuration file
file_put_contents($servicesPath, $yamlServices); // $services is the 'services.yml' path
我想创建一个 php class,它根据我的实体(在服务器 运行 上或使用命令)在 services.yml 文件中自动写入服务.是否可以这样做,还是我应该只使用文件系统来做?
可以,但新创建的服务将在下一次请求之前不可用。
检索捆绑包的 services.yml
:
// src/AcmeBundle/Controller/DefaultController.php
$kernel = $this->get('kernel');
$servicesPath = $kernel->locateResource('@AcmeBundle/Resources/config/services.yml');`
或者您的应用程序的全局 services.yml
:
$servicesPath = $kernel->getRootDir().'/config/services.yml';``
将您的新服务写入:
$parser = new \Symfony\Component\Yaml\Parser();
$dumper = nrw \Symfony\Component\Yaml\Dumper();
// Get the services already configured, use the path of 'services.yml' retrieved from bundle/application
$oldServices = $parser->parse($servicesPath);
$newService = array('your_service_name' => array(
// Here your arguments, tags, ...
);
$mergedServices = array_merge($oldServices, $newService);
$yamlServices = $dumper->dump($mergedServices);
// Write all in the configuration file
file_put_contents($servicesPath, $yamlServices); // $services is the 'services.yml' path