lau*_*ent 4 service dependency-injection base-url symfony
我有一个需要访问当前应用程序基URL的服务(app.request.getBaseURL()
在Twig视图中返回的内容).目前,我的配置是这样的:
services:
WidgetModel:
class: AppBundle\Model\WidgetModel
scope: prototype
arguments: ['%widgets%']
Run Code Online (Sandbox Code Playgroud)
所以作为第二个参数,我想注入基本URL.可能吗?如果没有,什么是适当的解决方案?
据我所知,没有内置的基本URL服务.这实际上是一个红旗,可能有你的组件取决于它可能不是一个好主意.但我想不出一个很好的理由.
通常,人们会注入请求对象.但这有其自身的问题,如下所示:http://symfony.com/blog/new-in-symfony-2-4-the-request-stack
相反,注入@request_stack服务并从中提取url:
class WidgetModel
{
public __construct($widgets,$requestStack)
{
$this->baseUrl = $requestStack->getCurrentRequest()->getBaseUrl();
Run Code Online (Sandbox Code Playgroud)
如果您确实发现自己需要多个服务中的baseUrl,那么您可以定义自己的工厂类型服务来生成它.但同样,这可能意味着您的设计需要重新思考.
归档时间: |
|
查看次数: |
4171 次 |
最近记录: |