8000 Remove information about request scpoe · symfony/symfony-docs@179039b · GitHub
[go: up one dir, main page]

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 179039b

Browse files
committed
Remove information about request scpoe
Services no longer depend on the request service, but instead on request_stack so this is not an issue anymore as of Symfony 2.4.
1 parent 7ca213a commit 179039b

File tree

1 file changed

+0
-63
lines changed

1 file changed

+0
-63
lines changed

cookbook/console/console_command.rst

Lines changed: 0 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -96,69 +96,6 @@ service container. In other words, you have access to any configured service::
9696
// ...
9797
}
9898

99-
However, due to the :doc:`container scopes </cookbook/service_container/scopes>` this
100-
code doesn't work for some services. For instance, if you try to get the ``request``
101-
service or any other service related to it, you'll get the following error:
102-
103-
.. code-block:: text
104-
105-
You cannot create a service ("request") of an inactive scope ("request").
106-
107-
Consider the following example that uses the ``translator`` service to
108-
translate some contents using a console command::
109-
110-
protected function execute(InputInterface $input, OutputInterface $output)
111-
{
112-
$name = $input->getArgument('name');
113-
$translator = $this->getContainer()->get('translator');
114-
if ($name) {
115-
$output->writeln(
116-
$translator->trans('Hello %name%!', array('%name%' => $name))
117-
);
118-
} else {
119-
$output->writeln($translator->trans('Hello!'));
120-
}
121-
}
122-
123-
If you dig into the Translator component classes, you'll see that the ``request``
124-
service is required to get the locale into which the contents are translated::
125-
126-
// vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Translation/Translator.php
127-
public function getLocale()
128-
{
129-
if (null === $this->locale && $this->container->isScopeActive('request')
130-
&& $this->container->has('request')) {
131-
$this->locale = $this->container->get('request')->getLocale();
132-
}
133-
134-
return $this->locale;
135-
}
136-
137-
Therefore, when using the ``translator`` service inside a command, you'll get the
138-
previous *"You cannot create a service of an inactive scope"* error message.
139-
The solution in this case is as easy as setting the locale value explicitly
140-
before translating contents::
141-
142-
protected function execute(InputInterface $input, OutputInterface $output)
143-
{
144-
$name = $input->getArgument('name');
145-
$locale = $input->getArgument('locale');
146-
147-
$translator = $this->getContainer()->get('translator');
148-
$translator->setLocale($locale);
149-
150-
if ($name) {
151-
$output->writeln(
152-
$translator->trans('Hello %name%!', array('%name%' => $name))
153-
);
154-
} else {
155-
$output->writeln($translator->trans('Hello!'));
156-
}
157-
}
158-
159-
However, for other services the solution might be more complex. For more details,
160-
see :doc:`/cookbook/service_container/scopes`.
161-
16299
Invoking other Commands
163100
-----------------------
164101

0 commit comments

Comments
 (0)
0