问题标签 [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.
php - 如何在 Slim 3 中设置属性
我正在尝试在 Slim 3 容器中添加一个属性,但是当我 var dump 时它显示“注意:未定义的属性:Slim\App::$user”。我知道在 Slim 2 中它是:
这将显示用户模型容器中的所有属性。但是我试图在 Slim 3 中实现这一点。
我查看了文档并找到了一个 add 函数,但它返回了一个未定义的属性。
这是我试过的代码:
我知道 User 类确实存在,因为我已经测试过了。我被困在这一点上,我不确定向我的容器添加属性的方法是什么。
twig - 如何在 Slim3 Twig 中获取路线链接?
我这样定义了我的路线:
我有兴趣按名称获取路线链接,例如:{% get_route('about.page') %}
我怎样才能做到这一点?
php - 在中间件中获取路由路径参数
在 Slim 3 中,我有一组具有相同操作的组,这取决于$args
:
我可以将那些常见的操作转移到更高的层次。正如我所读到的,它可能是中间件,但在中间件中我不能(或不知道如何)访问$args
.
php - 重定向后如何为请求重定向和存储数据
我正在尝试将用户重定向到登录页面,并显示错误和一条消息。
目前我正在这样做:
但我想重定向到登录页面,同时仍然有错误消息和 Flash 消息。我试过这种方式但不起作用:
php - 在 Slim 3 中根据 URI 路径更改路由文件
好的,所以我有 4 个文件夹,它们都有自己的 route.php。所以我想根据uri路径要求每个文件夹的路径。例如,如果我的网站路径是 www.example.com/user,那么 Slim 框架将需要控制器/用户/路由的路径。我正在尝试使用中间件来实现这一点,但是当我测试它时,我得到一个“调用成员函数错误”,那么我该如何解决这个问题。
下面是我的代码:
因此,在框架确定路线之前,先添加所需的路径。但是有些东西运行不正常,有什么想法吗?
php - 使用 slim-jwt-auth 生成令牌
我正在使用slim-jwt-auth为 JSON API 创建基于令牌的身份验证。
文档非常有帮助,但我不明白的一件事是令牌是如何生成的?文档说中间件能够解码令牌,但看不到任何编码方式。
我见过的一些项目使用firebase/jwt,但我不确定这是否需要,或者是否与slim-jwt-auth
.
slim-jwt-auth 是否能够生成令牌?
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)
.
我唯一的问题是感觉我使用异常是出于错误的原因,这可能会使调试变得更加困难。
关于减少重复和清理错误响应的任何建议?
php - 为什么要在 slim 3 中添加额外的中间件来阻止使用 cors 的 jwt 身份验证
我在向使用tuupola/cors和slim-jwt-auth的 slim 3 项目添加一些自定义中间件时遇到问题,其中 jwt 令牌存储在标头中作为承载进行身份验证。
一切运作良好。当从 chrome 发出 ajax 请求时,它首先发送一个选项请求以确认可以访问,然后在标头中发送带有 jwt 令牌的正确请求作为 Authorization: Bearer,但是当我向流中添加额外的中间件时,发送选项请求并返回 200 Ok,但从不发送实际请求。
即使我的自定义中间件被降低到最小的形式,并且根本没有改变,也会出现这个问题。中间件定义如下:
中间件本身很简单:
然后将中间件添加到所有根,如下所示:
禁用 MyMiddleware 时,选项请求和后续请求都使用标头中的 jwt 令牌执行,但启用 MyMiddleware 时,选项请求已成功发送,返回 200 OK,但永远不会发送第二个请求。
对于发生了什么以及如何调试它,我真的很困惑。
php - Slim 3 会话变量在路由上不持久
正如标题所述,我无法让我的会话变量在路由上保持不变。
我session_start()
在我的index.php
.
根路径:
在我app.log
看来,会话变量不存在。
但这是我成功登录后的代码:(发布到 /login)
我还在这里使用记录器进行测试,它告诉我它保存了正确的 ID。
我还使用了各种额外的库,结果完全相同。我也查了官方文档,没有用。
问题: 如何让会话变量在整个路由中保持不变?还是另一种保存会话的方法?和或另一种解决此登录问题的方法?