मुझे लगता है कि यदि आप पैरामीटर पास/सेट नहीं करते हैं, तो सिम्फनी सेवा निर्भरता के बारे में शिकायत करेगा। आप पैरामीटर को वैकल्पिक बनाना चाहते हैं ताकि हमेशा config.yml फ़ाइल में सेट करने की आवश्यकता न हो। और जब भी यह सेट हो, आप उस पैरामीटर का उपयोग करना चाहते हैं।
मेरी समाधान नहीं है:
# src/Acme/HelloBundle/Resources/config/services.yml
parameters:
my_parameter:
services:
my_mailer:
class: "%my_mailer.class%"
arguments: ["%my_parameter%"]
और फिर
# you-bundle-dir/DependencyInjection/Configuration.php
public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('you_bundle_ns');
// This is for wkhtmltopdf configuration
$rootNode
->children()
->scalarNode('my_parameter')->defaultNull()->end()
->end();
// Here you should define the parameters that are allowed to
// configure your bundle. See the documentation linked above for
// more information on that topic.
return $treeBuilder;
}
और फिर
# you-bundle-dir/DependencyInjection/YourBundleExtension.php
public function load(array $configs, ContainerBuilder $container)
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
$loader->load('services.xml');
$container->setParameter(
'you_bundle_ns.your_parameter',
isset($$config['you_bundle_ns']['your_parameter'])?$$config['you_bundle_ns']['your_parameter']:null
);
}
आप '% पैरामीटर% करने के लिए डिफ़ॉल्ट मान देकर अपने पैरामीटर वैकल्पिक बनाने '
यदि आपके पास बेहतर विकल्प हैं तो कृपया मुझे बताएं।
वैकल्पिक पैरामीटर का क्या लाभ है? पैरामीटर वातावरण के बीच आपकी कॉन्फ़िगरेशन को अलग करने के लिए हैं। आप बस अपने वातावरण में कॉन्फ़िगरेशन बदल सकते हैं, लेकिन यह उतना साफ नहीं होगा। – Ryan