I'm trying to speed up my stack by removing references to the service container where possible. In this case I only need the request:
email_error_message:
class: Core\MyBundle\Services\Email\ErrorMessage
arguments: [ @request, %params ]
However, that throws a scope widening issue. I'm not concerned with refactoring the code for now, I just wish to get rid of the warning by adding strict = true. But I can't seem to get the YAML syntax right:
email_error_message:
class: Core\MyBundle\Services\Email\ErrorMessage
arguments:
- { type: service, id: request, strict: false }
- %params%
This isn't working though. Any ideas?
EDIT I realise I could change the scope of this service to request, but that isn't an option in this case.
You want to restrict the scope of the service to the request
scope, since you need to make sure you're passed the right Request
instance - if you are using the service from within a subrequest for example, or whether through the main request. Adjust your service config to:
services:
email_error_message:
class: Core\MyBundle\Services\Email\ErrorMessage
scope: request
arguments: [ @request, %params% ]
See the docs for more details.
Edit as per your question edit, you're not able to change the scope. In which case, your syntax should be as follows:
services:
email_error_message:
class: Core\MyBundle\Services\Email\ErrorMessage
arguments: [ @request=, %params% ]
with the appended =
symbol. Note that I've not seen this referenced anywhere, and it's from digging around in the code for the DI container ;-)