问题标签 [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.

0 投票
1 回答
177 浏览

php - Slim Framework 4 getParsedBody 总是返回 null

我正在测试 Slim Framework 4,当我使用 getParsedBody 方法通过 POST 提交 JSON 时,我似乎无法检索任何数据,它总是导致 NULL。这是我的端点:

在一些文档之后,我添加了 BodyParsing 中间件:

这是我发送的请求:

我已经调试了一点,并验证了中间件正在处理请求,但到目前为止,我无法让它返回除 null 之外的任何内容。还看了看,似乎没有任何报告的问题有明确的解决方案。

0 投票
1 回答
422 浏览

php - Slim 4 PHP 中的默认路由/notFound 错误处理/HttpNotFoundException

当请求不存在的路由时,我想创建一个返回的 Slim 4 兼容的自定义错误页面 /JSON 回复。

默认路由(Slim 3)

我最近从 Slim 3 升级到 Slim 4。使用 Slim 3,我有一个默认路由可以完美地完成这项工作:

但是,当我在 Slim 4 中执行此操作时,出现错误

这显然意味着 Slim 将其识别为 GET / 的双重输入,这在 Slim 4 中是不允许的。

不幸的是,这篇文章也没有为 Slim 4 提供帮助。

未找到

此外,根据https://www.javaer101.com/en/article/13830039.html,我尝试添加

到我的routes.php,但它不起作用:

HttpNotFoundException

最后,我也尝试创建了一个错误处理方法(专门针对HttpNotFoundException,虽然我不知道如何分离HttpNotImplementedException)https://www.slimframework.com/docs/v4/middleware/error-handling.html,没有任何成功。

非常感谢任何帮助。

0 投票
0 回答
82 浏览

apache - 根目录中的 Slim 4 .htacces 而不是 public

我对如何正确处理不同的 .htaccess 的问题有点迷茫。

基本上我需要的是能够访问资产目录中的 * .css、* .js、* .png、* .etc 文件,而不管模板如何。

官方 slim4 文档说如下

确保您的.htaccess and index.php文件位于同一公共可访问的目录中。.htaccess 文件应包含以下代码:

但是通过这种方式,公共目录之外的所有内容都是不可见的,所以我尝试在根目录中创建一个 .htaccess 没有太大成功,如果路径以“模板”开头,例如允许访问该资产文件(仅在如果文件包含有效的扩展名并且存在)。

在任何其他情况下,所需的行为应该是加载 public/index.php 然后应用程序正常启动

目录组织方式的描述性图像

在此处输入图像描述

0 投票
1 回答
181 浏览

php - Slim 4 抛出 Slim\Exception\HttpNotFoundException

我有这个错误

错误日志

我整天都在寻找解决方案,包括尝试设置正确的目录,如此处所述,还包括所需的两个 .htaccess 文件,但没有任何效果

https://github.com/selective-php/basepath#installation

这是我的index.php

此外,我还将分享我的项目框架和 2 .htaccess,以及我的 composer.json

文件夹结构

公共/文件夹上的 .htaccess:

.htaccess 在我的项目的根文件夹中:

作曲家.json

我正在使用 XAMPP:

Apache/2.4.47 (Win64) OpenSSL/1.1.1k PHP/8.0.5

加载模块如 phpinfo() 说

启用了 mods 的 apache

mod_rewrite 模块已启用,如 phpinfo() 所说

此外,我尝试更改此 apache 配置 httpd.conf 指令,但没有任何效果,因为我在某个地方看到过,但不起作用。

现在是这样。对于其他项目,我没有问题。

我不知道我可以说哪些更相关的信息。

我查看的其他资源:

Apache2 上的 PHP Slim4 给出 HttpNotFoundException

苗条\异常\HttpNotFoundException

https://odan.github.io/2019/11/05/slim4-tutorial.html

0 投票
1 回答
72 浏览

php - 如何在每个 api 调用上验证 psr-jwt 令牌

我在我的 slim4 应用程序中使用https://github.com/RobDWaller/psr-jwt库

我想在 API 调用之前验证令牌。如果令牌有效,API 应该调用,否则会提示错误。下面是我的代码

它是否验证令牌本身。是否存在其他方法?我的问题是:

  1. 如何编写自定义错误?

  2. 如何排除中间件登录,认证前和认证后注册api。

    我是苗条框架的新手。请帮我。

0 投票
0 回答
81 浏览

php - Slim4 通过 openapi-generator 部署问题

我已经为此工作了好几天了,我正要拔掉头发。

目标:在我的 LAMP 服务器上的特定子目录中部署 Slim4,并通过简单的 URL 访问。

结构: 服务器上有几个我的 Web 应用程序实例,应该为所有实例复制设置;结构很简单:

/var/www/company1.com/app

  • 这个“app”文件夹包含网站的主要index.php,以及其他各种文件夹。例如。/var/www/company1.com/app/index.php => https://company.com/index.php
  • 有一个名为“api”的文件夹,我想在其中加载 Slim4。我真的不介意这个文件夹的结构和深度。我的工作是基于这是作曲家文件所在的位置。
  • 最终结果应该是客户可以通过调用https://company1.com/api访问 api

我正在使用 openapi-generator 和 Pet Store yaml 文件。跑步:

openapi-generator-cli generate -i petstore.yaml -g php-slim4 -o /var/www/company1/api/

然后,我按照说明中的说明运行composer install并设置了config.inc.php文件。

但是,当我导航到http://company1.com/api时,每次都会遇到同样的问题:

404 Not Found Type: Slim\Exception\HttpNotFoundException Code: 404 Message: Not found. File: /var/www/company1.com/app/api/vendor/slim/slim/Slim/Middleware/RoutingMiddleware.php Line: 91 Trace: #0 /var/www/company1.com/app/api/vendor/slim/slim/Slim/Middleware/RoutingMiddleware.php(58): Slim\Middleware\RoutingMiddleware->performRouting() #1 /var/www/company1.com/app/api/vendor/slim/slim/Slim/MiddlewareDispatcher.php(147): Slim\Middleware\RoutingMiddleware->process()

它继续......!

我想不通这个问题。这个问题似乎很常见,因为有很多关于它的帖子,所以我确信我错过了一些非常简单的东西。

我尝试了以下方法:

  1. 设置基本路径 $app->setBasePath("/api");

  2. 创建 /public/ 文件夹并将 index.php 文件移动到那里,然后根据以下说明创建两个不同的 .htaccess 文件: https ://akrabat.com/running-slim-4-in-a-subdirectory/

  3. 按照说明使用基本路径 https://github.com/selective-php/basepath

似乎都不起作用!我究竟做错了什么?

我已经能够成功加载 Slim4 Skeleton 应用程序,但是我想使用 openapi-generator 以便我可以让它根据我的 openapi yaml 规范自动准备所有 php 文件。

任何关于提示的想法将不胜感激!

0 投票
0 回答
21 浏览

php - 如何列出我在 Slim Framework 4 中定义到数组中的所有路径?

上下文:我正在使用 Slim Framework 4,我正在尝试构建一个自动生成的 /sitemap.xml

我想做这样的事情......

然后为 sitemap.xml 包装一些 XML。

我将如何在 Slim Framework 4 中执行此操作?

0 投票
1 回答
143 浏览

php - Slim 4 捕捉 php 警告、通知和错误

我刚开始使用 slim 框架,想用自定义错误处理程序捕获 php 警告、通知和错误。

ErrorHandlerMiddleware.php

索引.php

自定义错误处理程序正在工作(不再显示 php 警告)。但我想在错误处理程序修改的输出中添加一些自定义变量。这应该由

但错误属性为空。

0 投票
1 回答
105 浏览

php - Slim 4 内部重定向,无限循环

升级到 Slim v4 后,我试图用changelog中指定的 $app->handle 替换我的简单 $app->subRequest 调用。但是,在更新日志或升级指南中没有关于如何执行此操作的详细信息,我尽最大努力修复它最终会创建一个无限循环:

这就像即使 $barReq 是一个具有全新 uri(和路径)的新请求对象,路由器也不会解析应该处理它的路由处理程序,而是再次由同一个处理程序处理。

我之前的简化(v3)代码看起来像并且在调用 /foo 时可以很好地获得 /bar 路由的结果:

我可能缺少一些关于 Slim 4 如何在内部处理请求和路由的核心概念,希望能得到一些帮助!

编辑:也许应该补充一点,我对内部重定向的意思是客户端不应该知道已经进行了重定向。即,任何向客户端返回某些内容的常规重定向函数在这里都不适用。

0 投票
0 回答
38 浏览

php - 如何在 Slim4 Framework 身份验证路由中间件中处理用户角色

我正在使用 Slim4 框架,并且我已经实现了一个身份验证路由中间件来在页面加载之前检查用户角色。

这是我的路线配置:

如您所见, UserAuthMiddleware 是我的路由中间件,用于阻止未经过身份验证的用户。

我的目标是定义许多用户角色,那么单个中间件是不够的。

我可以将参数之类的东西传递给 add(routemiddleware) 方法吗?

我试图用中间件构造函数中的参数切换到显式的“新”语法:

但是所以我失去了使用学说/注释@Inject注释制作的中间件中的所有依赖注入。