问题标签 [slim-4]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 如何从 Slim 4 中间件进行重定向?
我一直在测试新的 Slim 4 框架,并且重定向在普通类中对我来说工作正常,但我似乎无法让它们在中间件中工作,其中响应是由请求处理程序动态生成的(显然?)。当我尝试使用 Location 标头重定向时,它根本无法重定向,并且我的路线继续到原始位置。
这是我用于测试的身份验证中间件的基本版本:
有没有人让这个工作?如果是这样,你是如何做到的?提前致谢。
pdo - 如何在 slim 4 中设置多个 PDO 数据库连接并在存储库中访问它们?
我尝试使用 2 个 PDO 数据库连接设置 SLIM 4。
我无法从存储库访问 db 或 db2。
我想我做错了什么
我跟着苗条的4骨架。
我在应用程序中创建了一个 db.php 文件,用于在容器中添加 db 的定义
我在 index.php 中包含 db.php 我试图从存储库访问 db 或 db2,但它不起作用
这是我的文件:
应用程序/db.php
公共/index.php
src/域/ObContact/ObContactRepository.php
php - 带有授权标头的 GET 请求之前的 OPTIONS 请求在苗条框架 4 中不起作用
我已经克隆了已经实现了 CORS的超薄骨架( https://github.com/slimphp/Slim-Skeleton )。但是仍然当 API 在 GET 之前调用 OPTIONS 时,它会发送 405 错误“不允许的方法。必须是以下之一:GET”
这是我遇到此错误的路线。$group->get('/users', ListUsersAction::class);
邮递员也有同样的路线。如果我从标头中删除授权令牌,则相同的路线正在工作。
执行甚至没有到达“AuthenticationMiddleware”的第一行。
但是我通过添加没有“AuthenticationMiddleware”的相同选项路由来测试它。
像这样:
这是有效的。所以我想我忘了添加一些代码,或者我做了任何导致错误的错误,或者骨架有错误。
有人可以帮忙吗?提前致谢。
php - 如何从苗条的中间件中获取属性
当我尝试在 Slim 4 的先前中间件中设置属性时遇到问题。
我在 app/middleware.php 中使用中间件
我使用 JwtAuthentication 中间件来检查令牌,我想将解码的令牌传递给下一个中间件:CheckTokenInDatabaseMiddleware。
我返回了带有解码令牌的 $request :return $response->withAttribute("decoded", $arguments['decoded']);
在 CheckTokenInDatabaseMiddleware 中 $request->getAttribute('decoded') 返回 NULL
我有一个纤细的骨架并使用它:
应用程序/中间件.php
应用程序/应用程序/中间件/CheckTokenInDatabaseMiddleware.php
bdd - 如何在 Slim 4 框架中将服务注入 Behat 特征上下文
当我搜索服务注入功能上下文时,我总是会找到 symfony 的扩展。但我需要扩展或其他东西才能在 Slim 4 框架中执行此操作。
谢谢你。
php - Slim 4 错误处理未捕获基本异常
出于某种原因,我的 Slim 4 应用程序错误处理程序没有捕获可以被捕获的错误,\Exception
并且我在浏览器中看到502 bad gateway
错误,这是我的ErrorMiddleware
配置(我正在使用 PHP-DI 来配置它):
我试图添加处理程序来处理这样的 500 错误$middleware->setErrorHandler(HttpInternalServerErrorException::class, $container->get(NotFoundHandler::class) );
但它不起作用,502 bad gateway
直到我将所有控制器操作都用try/catch(\Exception $e)
.
我需要添加一些其他错误处理程序吗?我不清楚如何在 slim 4 应用程序中正确设置处理。
更新: 我发现ErrorMiddleware
默认情况下 slim 会捕获HttpException
正在扩展的 slim Exception
,但为什么不直接Exception
甚至Throwable
优雅地退出带有漂亮错误页面的应用程序
monolog - Slim 4 独白不写日志
我monolog
在我的 slim 4 应用程序中进行了配置,并将 and 设置logErrors
为logErrorDetails
true,ErrorMIddleware
但是当我遇到错误时,它不会写入日志。为了模拟错误,我打开了我的应用程序上的缓存,我得到了一个像这样的错误,默认情况下使用Call to undefined function apcu_fetch()
apcudoctrine
缓存所有元数据,并且我的开发环境中没有安装 apcu。
这是PHP-DI
记录器的配置:
这是ErrorMiddleware
配置:
是的,我正在将中间件添加到App
这样的$app->add($container->get(ErrorMiddleware::class));
我检查了不同的 slim 4 骨架 Github 存储库,但没有找到任何额外的配置,所以我不知道为什么它没有将日志写入文件。也许我需要设置一个自定义的默认错误处理程序?作为 slim 4 默认的一个使用 phperror_log
函数来写日志?
php - 使用 Varnish 时修改路由和 url
我有一个项目,在 Slim 4 项目之前使用了 Varnish。由于某些项目的特殊性,应隐藏原始 url,并将传入请求重写为其他一些标头。
例子
- 对 demo.xyz 的原始调用即将来到 Varnish
- Varnish 将请求转换为
http://slimapp.dev/url/demo.xyz
- 原始主机保存在标头中
X-Orig-Host: demo.xyz
Slim App 需要检测它是否是 Varnish 请求(我已经知道了)并且需要转换路由。
路线
没有清漆:
使用清漆:
url_for
因此,当使用(Twig-View 包)创建路由时,应该像这样生成 url:
- 不含清漆的路线:
http://slimapp.dev/url/demo.xyz/article/123
- 带清漆的路线:
http://demo.xyz/article/123
想法:
- 修改原始的 UriInterface 对象,但我不知道如何。
- 为 Twig-View 写一个 TwigExtension 来修改方法
url_for
等等。
第一个想法感觉更可靠,也是正确的地方。另一个意味着我需要覆盖辅助方法来构建基于X-Orig-Host
.
知道如何修改 Uri / 可能覆盖该create
方法吗?
提前致谢!
PS:我在Slim Discourse中提出的问题相同。
更新 1
路由.php
中间件.php
错误信息
twig - 致命错误:未捕获的 TypeError:参数 1 传递给 Slim\Views\Twig
我不断收到致命错误:未捕获的类型错误:传递给 Slim\Views\Twig::__construct() 的参数 1 必须是 Twig\Loader\LoaderInterface 的实例,给定字符串...
代码是:
我在用着
我尝试了不同的选项(评论)。有谁能够帮我?我想不出来谢谢
php - Slim 4 - 基本路径作为查询参数
我有一个 Slim 4 应用程序正在运行,并将一些重复的 url 参数设置为基本路径,以便在 url 生成中不显示它。
请求流:
- 调用--->通过 Varnish 代理
http:demo.xyz?p1=a
重写http://slim.app/url/demo.xyz?p1=a
http://slim.app/url/demo.xyz?p1=a
直接拨打
两个电话都需要工作。
在中间件中,我设置/url/demo.xyz
为基本路径,因此生成的 URL 是http://demo.xyz?p1=a
.
这样做的问题是:
- 基本路径不被识别
routes.php
为传递参数的东西,因此url/abc
不匹配。 - 我仍然需要
url
参数的值才能在 Slim 应用程序中获取一些东西。 - 我的路由需要匹配此结构才能与两个请求流一起使用。
有什么想法可以让它发挥作用吗?
这与放置在这里的问题有关。