Php 我必须为每个环境复制所有配置文件

Php 我必须为每个环境复制所有配置文件,php,symfony,yaml,Php,Symfony,Yaml,我尝试在config/*目录中添加一些配置。 我将使用一个非常简单的示例来说明这个问题,但请记住,任何服务的每个.yaml配置文件都会出现这个问题。我无法在配置文件之间进行继承 因此,在services.yaml中,我有以下代码: #config/services.yaml parameters: app.debug: 0 smtp.user: '' app.locale: '%kernel.default_locale%' app.product.number_

我尝试在config/*目录中添加一些配置。 我将使用一个非常简单的示例来说明这个问题,但请记住,任何服务的每个.yaml配置文件都会出现这个问题。我无法在配置文件之间进行继承

因此,在services.yaml中,我有以下代码:

#config/services.yaml
parameters:
    app.debug: 0
    smtp.user: ''
    app.locale: '%kernel.default_locale%'
    app.product.number_per_page: 20
    container.dumper.inline_factories: true
services:
    # default configuration for services in *this* file
    _defaults:
        autowire: true      # Automatically injects dependencies in your services.
        autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
        bind:
            $locale: '%kernel.default_locale%'
            $product_per_page: '%app.product.number_per_page%'
然后我尝试将每页
$product\u
访问到我的控制器:

#src/Controller/myController.php
public function listProduct(int $product_per_page){
   dump($product_per_page);
   die();
}
当我执行此代码时,它会给我以下错误:

无法解析参数$product\u/页,共页 “App\Controller\ProductController::listproduct()”,可能您忘记了 将控制器注册为服务,或使用 “控制器.服务参数”

因此,我必须复制此配置文件(
config/services.yaml
),然后将其粘贴到config/
services\u dev.yaml、services\u prod.yaml、services\u test.yaml

然后它就开始工作了,但这根本不合适

因为我必须对每个配置文件都这样做。。。因此,每次更新配置时,我都会复制并粘贴到每个环境中

当然,我尝试了
缓存:清除
编写器更新
,但没有任何效果

我期待着Symfony阅读文件作为解释,但它不适合我

我试图创建另一个Symfony项目,现在它正在这个项目中工作。但我想知道是什么错了?我是否做过一件事,导致即使在更新Symfony之后,即使在拥有updatecomposer之后,甚至在清除缓存之后,也无法纠正错误


我真不敢相信除了创建一个新的Symfony项目之外,没有什么可以做的。

我真的不明白你的问题。最初的错误是因为您的控制器未作为服务获取。通常,使用autowire时,services.yaml文件中有一个资源:“../src/Controller/”行,用于注册控制器。你还有那部分吗?我可能不太清楚。正如我所说的,我已经创建了一个测试Symfony项目,在这个项目中我做了与当前项目相同的事情,它正在按它应该做的那样工作。现在我想知道我是否遗漏了什么,是否有办法清除服务配置、清除Symfony项目或其他任何东西。因为我所做的应该是有效的,但实际上是无效的。我想我的问题已经很清楚了。正如发布的错误消息所示,您的config/services.yaml文件将无法工作,并且将完全失败。至少对我来说,这个关于一个新项目和附加服务文件的讨论是非常令人困惑的,因为我不知道它与您问题中的错误有什么关系。您可能正在讨论在每个services.yaml文件中重复_defaults部分?如果是,那么是的,每个文件都是它自己的工作单元,每个文件都需要它自己的默认部分。同样,如果适用,每个文件都需要自己的资源部分。是设计的。@Cerad我明白了,但这是相反的,因为配置文件之间存在继承关系。对不起,我知道这是一个令人困惑的问题,我已经尽力解释了。但是,如果您想做得简单,我的问题是“配置文件之间的继承不起作用,如何在不创建新的干净Symfony项目的情况下使其起作用”其他类型的配置文件(如在config/packages下找到的配置文件)只是数组,处理方式非常不同。如果你愿意,我们可以去聊天,你可以告诉我哪些文件不工作。我真的不明白你的问题。最初的错误是因为您的控制器未作为服务获取。通常,使用autowire时,services.yaml文件中有一个资源:“../src/Controller/”行,用于注册控制器。你还有那部分吗?我可能不太清楚。正如我所说的,我已经创建了一个测试Symfony项目,在这个项目中我做了与当前项目相同的事情,它正在按它应该做的那样工作。现在我想知道我是否遗漏了什么,是否有办法清除服务配置、清除Symfony项目或其他任何东西。因为我所做的应该是有效的,但实际上是无效的。我想我的问题已经很清楚了。正如发布的错误消息所示,您的config/services.yaml文件将无法工作,并且将完全失败。至少对我来说,这个关于一个新项目和附加服务文件的讨论是非常令人困惑的,因为我不知道它与您问题中的错误有什么关系。您可能正在讨论在每个services.yaml文件中重复_defaults部分?如果是,那么是的,每个文件都是它自己的工作单元,每个文件都需要它自己的默认部分。同样,如果适用,每个文件都需要自己的资源部分。是设计的。@Cerad我明白了,但这是相反的,因为配置文件之间存在继承关系。对不起,我知道这是一个令人困惑的问题,我已经尽力解释了。但是,如果您想做得简单,我的问题是“配置文件之间的继承不起作用,如何在不创建新的干净Symfony项目的情况下使其起作用”其他类型的配置文件(如在config/packages下找到的配置文件)只是数组,处理方式非常不同。如果你愿意,我们可以去聊天,你可以告诉我哪些文件不工作。