问题标签 [slim-3]

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 回答
511 浏览

php - 如何在 Slim 3 中设置属性

我正在尝试在 Slim 3 容器中添加一个属性,但是当我 var dump 时它显示“注意:未定义的属性:Slim\App::$user”。我知道在 Slim 2 中它是:

这将显示用户模型容器中的所有属性。但是我试图在 Slim 3 中实现这一点。

我查看了文档并找到了一个 add 函数,但它返回了一个未定义的属性。

这是我试过的代码:

我知道 User 类确实存在,因为我已经测试过了。我被困在这一点上,我不确定向我的容器添加属性的方法是什么。

0 投票
1 回答
630 浏览

php - 在路由中访问 $this 不起作用“不在对象上下文中使用 $this”

我正在尝试$this在路由的函数中使用,当我这样做时,它给了我以下错误:

这是代码:

我已经尝试基于this来实现它。

为什么$this在函数内部使用不起作用以及如何在函数$this内部使用。

0 投票
2 回答
3380 浏览

twig - 如何在 Slim3 Twig 中获取路线链接?

我这样定义了我的路线:

我有兴趣按名称获取路线链接,例如:{% get_route('about.page') %}

我怎样才能做到这一点?

0 投票
2 回答
1751 浏览

php - 在中间件中获取路由路径参数

在 Slim 3 中,我有一组具有相同操作的组,这取决于$args

我可以将那些常见的操作转移到更高的层次。正如我所读到的,它可能是中间件,但在中间件中我不能(或不知道如何)访问$args.

0 投票
1 回答
280 浏览

php - 重定向后如何为请求重定向和存储数据

我正在尝试将用户重定向到登录页面,并显示错误和一条消息。

目前我正在这样做:

但我想重定向到登录页面,同时仍然有错误消息和 Flash 消息。我试过这种方式但不起作用:

0 投票
1 回答
1208 浏览

php - 在 Slim 3 中根据 URI 路径更改路由文件

好的,所以我有 4 个文件夹,它们都有自己的 route.php。所以我想根据uri路径要求每个文件夹的路径。例如,如果我的网站路径是 www.example.com/user,那么 Slim 框架将需要控制器/用户/路由的路径。我正在尝试使用中间件来实现这一点,但是当我测试它时,我得到一个“调用成员函数错误”,那么我该如何解决这个问题。

下面是我的代码:

因此,在框架确定路线之前,先添加所需的路径。但是有些东西运行不正常,有什么想法吗?

0 投票
2 回答
9964 浏览

php - 使用 slim-jwt-auth 生成令牌

我正在使用slim-jwt-auth为 JSON API 创建基于令牌的身份验证。

文档非常有帮助,但我不明白的一件事是令牌是如何生成的?文档说中间件能够解码令牌,但看不到任何编码方式。

我见过的一些项目使用firebase/jwt,但我不确定这是否需要,或者是否与slim-jwt-auth.

slim-jwt-auth 是否能够生成令牌?

0 投票
1 回答
3337 浏览

php - Slim3/DRY - 如何在不重复代码的情况下正确处理错误/异常?

我正在使用 Slim3 开发一个相当大的 JSON API。我的控制器/动作目前充斥着以下内容:

在应用程序的某些点上,任何事情都可能出错,因此需要做出适当的响应。但常见的一件事是错误响应总是相同的。status总是error,是可选的data(在表单验证错误的情况下data将包含这些),并message设置为向 API 的用户或使用者指示出了什么问题。

我闻到代码重复的味道。如何减少代码重复?

从我的脑海中,我所能想到的就是创建一个自定义异常,类似这样的App\Exceptions\AppException事情需要选项data并且message将获得表单$e->getMessage()

之后创建中间件,调用$next包装在 try/catch 中:

现在我在代码中所要做的就是throw new \App\Exceptions\AppException("Username or password incorrect", null).

我唯一的问题是感觉我使用异常是出于错误的原因,这可能会使调试变得更加困难。

关于减少重复和清理错误响应的任何建议?

0 投票
1 回答
433 浏览

php - 为什么要在 slim 3 中添加额外的中间件来阻止使用 cors 的 jwt 身份验证

我在向使用tuupola/corsslim-jwt-auth的 slim 3 项目添加一些自定义中间件时遇到问题,其中 jwt 令牌存储在标头中作为承载进行身份验证。

一切运作良好。当从 chrome 发出 ajax 请求时,它首先发送一个选项请求以确认可以访问,然后在标头中发送带有 jwt 令牌的正确请求作为 Authorization: Bearer,但是当我向流中添加额外的中间件时,发送选项请求并返回 200 Ok,但从不发送实际请求。

即使我的自定义中间件被降低到最小的形式,并且根本没有改变,也会出现这个问题。中间件定义如下:

中间件本身很简单:

然后将中间件添加到所有根,如下所示:

禁用 MyMiddleware 时,选项请求和后续请求都使用标头中的 jwt 令牌执行,但启用 MyMiddleware 时,选项请求已成功发送,返回 200 OK,但永远不会发送第二个请求。

对于发生了什么以及如何调试它,我真的很困惑。

0 投票
1 回答
727 浏览

php - Slim 3 会话变量在路由上不持久

正如标题所述,我无法让我的会话变量在路由上保持不变。

session_start()在我的index.php.

根路径:

在我app.log看来,会话变量不存在。

但这是我成功登录后的代码:(发布到 /login)

我还在这里使用记录器进行测试,它告诉我它保存了正确的 ID。

我还使用了各种额外的库,结果完全相同。我也查了官方文档,没有用。

问题: 如何让会话变量在整个路由中保持不变?还是另一种保存会话的方法?和或另一种解决此登录问题的方法?