如何覆盖请求类?



我尝试覆盖核心类,但这个似乎不起作用。我知道我需要更新应用程序/配置/应用程序.php文件以指向新类。但是当我这样做时,HTML redender 会停止在 head 标签处。

我将请求类从核心扩展到应用程序/src,更新了 app.php 文件,但它不起作用并给了我一个空白页。我需要这个来使用重定向网址。

如果您的目标是在发送回请求之前对请求执行某些操作,则可能需要使用中间件而不是覆盖该类。

一个很好的例子是Centry门户包,你可以在这里找到:https://github.com/a3020/centry

查看centryProviderCentryServiceProvider.php函数registerMiddleware(),了解如何注册中间件。 然后查看centryHttpMiddleware中的 2 个文件,看看它是如何使用的。

如果您使用的是版本 8,则需要在 src 文件夹中自动加载您的类。

在应用程序/引导/自动加载中.php

$classLoader = new SymfonyComponentClassLoaderPsr4ClassLoader();
$classLoader->addPrefix('Application\Example', DIR_APPLICATION . '/' . DIRNAME_CLASSES . '/Example');

从此处开始,您将需要覆盖关联的服务提供商。目前还不完全清楚您尝试覆盖哪个类以及这将需要哪个服务提供商。下面是一个覆盖 \Concrete\Core\Http\HttpServiceProvider 的示例,将类放置在 application/Src/Example/HttpServiceProvider 中

return [
'providers' => [
'core_http' => 'ApplicationExampleHttpServiceProvider'
]
]

从服务提供商那里,您可以以适合您的用例场景的方式扩展类并覆盖返回的类(如果多个类具有引用,这可能会很乏味,但这是我所知道的正确覆盖核心类的唯一方法(。通常,您可以只扩展覆盖一两个方法的现有类,并提出一个优雅的解决方案。

相关内容

  • 没有找到相关文章

最新更新