我有一个使用FOSHttpCacheBundle
的项目出于某种原因,我需要扩展类TagHandler
并使用自己的类,因此我创建了MyTagHandler
来扩展TagHandler:
use FOS\HttpCacheBundle\Handler\TagHandler as BaseTagHandler;
class MyTagHandler extends BaseTagHandler
{
...
然后我将其注册在services.xml中:
<service id="fos_http_cache.handler.mytag_handler" class="MyBundle\Cache\MyTagHandler">
<argument type="service" id="fos_http_cache.cache_manager" on-invalid="null" />
</service>
这很好用,但我希望将其用于我也拥有的其他捆绑软件中。
所以我试图在
中做同样的事情MyProject/vendor/MyOtherBundle
并执行与上述相同的步骤:
[error] 546#546: *125 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught Symfony\Component\Debug\Exception\FatalThrowableError: Type error: Argument 1 passed to MyTagHandler::__construct() must be an instance of FOS\HttpCache\CacheInvalidator, null given, called in MyProject/admin/cache/dev/adminDevDebugProjectContainer.php on line 3776 in MyTagHandler.php:36
因此,fos_http_cache.cache_manager
基本上已在项目的捆绑软件中被识别和使用,但是在供应商的捆绑软件中使用时却未被识别。
有帮助吗?