Я запустил веб-сайт под Symfony 3.4.12 и создал свой собственный пакет. У меня есть собственный файл конфигурации на Yaml:
# src/CompanyBundle//Resources/config/config.yml
company_bundle:
phone_number
... и запускается он так:
<?php
# src/CompanyBundle/DependencyInjection/CompanyExtension.php
namespace CompanyBundle\DependencyInjection;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader;
class CompanyExtension extends Extension
{
/**
* {@inheritDoc}
*/
public function load(array $configs, ContainerBuilder $container)
{
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('config.yml');
}
}
?>
Я хотел бы получить свои пользовательские параметры в моем файле контроллера, как лучше всего это сделать? Я пробовал этот способ, но безуспешно:
$this->getParameter('company_bundle.phone_number')
Спасибо.




Вы должны определить свой собственный DependencyInjection/Configuration.php: http://symfony.com/doc/3.4/bundles/configuration.html#processing-the-configs-array
Как это:
public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('company_bundle');
$rootNode
->children()
->scalarNode('phone_number')
->end()
->end()
;
}
А затем преобразовать его в файл DependencyInjection/...Extension.php. Если вы хотите сделать эту опцию параметром, вы должны сделать это так:
public function load(array $configs, ContainerBuilder $container)
{
// Some default code
$container->setParameter('company_bundle.phone_number', $config['phone_number']);
}
И затем вы можете получить этот параметр в своем контроллере, как и вы.
Это слишком сложно, чтобы делать то, что я думаю. Более того, если мне нужно устанавливать все параметры один за другим, это бесполезно. Идея заключалась в том, чтобы добавлять / редактировать / удалять переменные в файле yaml без редактирования какого-либо файла php. В любом случае большое спасибо.
@ Paolito75 Я полагаю, вы можете сделать это в вашем config.yml внутри раздела parameters. Но я не уверен, что это сработает
Прочтите еще немного о нестандартная конфигурация. Вам понадобится дерево конфигурации, а затем используйте $ container-> setParameter для создания параметров. Или просто определите свой phone_number как параметр для начала. Точно так же, как говорится в ответе ниже, хотя я опередил его сообщение примерно на 4 секунды.