问题标签 [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 PUT-Request CORS 标头
我尝试使用 SLIM Framework v4 后端设置 Angular 应用程序;Angular 在本地运行,而 Slim 在部署服务器上。所以需要 CORS 设置,我确实喜欢文档中给出的内容:
在获取请求时,存在 Acces-Control-Allow-Origin 标头;没问题,一切都按预期工作。根据 Put 请求(示例):
即使在函数中添加了额外的内容,浏览器的响应中也不存在标头。
我究竟做错了什么?
php - 无法在后端 Slim 4 中访问 formData
我正在尝试使用 vue.js、slim 4 和 vuetify 上传文件,但我无法在后端访问 formData。
这是我的 vuetify 表单:
我在方法中的上传功能:
这是我的后端控制器:
这是我得到的响应,我得到状态 200,好的,但是当它应该被上传时数据是空的,我是如何在我的后端控制器中建立它的。
对象配置:{url:“/file/upload”,方法:“post”,数据:FormData,标题:{...},transformRequest:Array(1),...}数据:“”标题:{cache-control:“ no-store, no-cache, must-revalidate”,连接:“Keep-Alive”,内容长度:“0”,内容类型:“text/html; charset=UTF-8”,日期:“星期三, 2020 年 10 月 14 日 18:47:47 GMT",...} 请求:XMLHttpRequest {readyState:4,超时:0,withCredentials:false,上传:XMLHttpRequestUpload,onreadystatechange:ƒ,...} 状态:200 statusText:“OK” 原型:对象
webpack - Slim 4 & Webpack 错误清单文件不存在
我正在设置 Slim 4 PHP 应用程序,并且正在使用 Webpack 4 构建 JS 和 CSS。我遵循了Github和Slim 教程中的代码,但我总是收到错误:
我的 layout.twig 文件在这一行失败:
{% webpack_entry_js '供应商' %}
我的 webpack.config.js 文件包含:
当我运行 webpack 编译器时:npx webpack --watch
它可以工作。在/public/assets
文件夹内,我看到编译的文件。这里也是 package.json 文件:
我尝试了许多其他方法,更改模块版本(如 Webpack 5 等)但没有成功。对于另一个项目,我使用了带有 Encore 模块的 Symfony 4,它工作正常。但到目前为止,Slim 4 还没有成功。
感谢您分享您的经验。
php - 我正在将我的 API 从 slim-3 转换为 slim-4,我正在努力弄清楚如何将 JWT 添加到中间件
我正在使用作曲家来安装超薄骨架。那些内置的路线按预期工作。我了解如何添加我以前的路由和数据库连接,但我一直在为如何添加任何 JWT 库而苦苦挣扎。我搜索了又搜索,但没有找到太多关于 Slim-4 的文档,而且我尝试过的东西似乎总是以某种方式失败。
因此,例如,我使用 composer 安装tuupola/slim-jwt-auth,它说要添加以下代码:
但是我在哪里或如何将它添加到中间件?是否需要添加到 app/middleware.php 中?我阅读的所有文档都具有与其他目录和其他目录完全不同的文件结构。一旦将其放置在正确的位置,看起来就像在没有令牌的情况下发出请求时,我应该得到 401 Unauthorized 响应。
在那部分工作之后,我知道我需要创建一个路由来获取我的访问令牌,但是我在这个库中没有看到任何关于它的内容,所以我假设我需要另一个库来编码我的令牌并从我的请求中返回它。
一旦我真正得到一个令牌响应并将其传递到我的实际请求路由的标头中,我会假设我会执行以下操作
如果有人有他们喜欢的并且运行良好的库,我对 firebase 或任何 JWT 库持开放态度,我只需要一些指导,因为我觉得缺少所有文档。
angular - Angular 2 和 Slim PHP 框架:如何正确转义字符串以在 GET 请求中使用
环境
我有一个使用 Angular2 构建的前端,它与使用 Slim PHP Framework v4 构建的 API 进行通信。
在 Angular 前端,用户可以在表单中输入文本并提交,然后从 API 接收响应。
Angular 项目向 URL 发出请求/api/{text}
。
据我所知,无法访问通过例如/api?text={text}
Slim v4 提供的参数,因此我无法使用 Angular 的HttpParams
功能。出于这个原因,URL 直接传递给 Angular 的HttpClient
。IE
问题
我已经读过某些字符被编码,然后在提交请求之前由 Angular 再次解码(即\
, /
, .
)。因此,text
上例中变量的值是无效的。
一种解决方案是手动创建一个正则表达式语句,并在提交请求之前使用它对字符串进行编码,然后在 API 中对字符串进行解码。
我想避免这种情况,所以我想知道以下两种情况之一是否可行:
如上所述,是否有任何 Javascript、Typescript 或 Angular 功能用于编码字符串以在 URI 中使用?
有什么方法可以访问
?text={text}
Slim 版本 4 中从 GET 请求中提供的格式参数的值?
编辑:
我还在 Angular 中使用自定义提供程序将身份验证令牌附加为格式的 URL 参数?auth=[my_token_here]
。该令牌附加到 Angular 发送的每个请求。自定义提供程序使用以下代码附加参数:
我已经研究出如何从 Slim API 中读取 'auth' 的值。但是,当我修改 get 请求以将text
变量添加为参数时,参数永远不会提交,Slim API 仍然只能看到auth
参数。修改后的代码如下:
所以这里没有错误,但是'text'参数永远不会附加到URL(当我提交请求时检查浏览器的网络选项卡时,我只能看到auth参数)。
我是 Angular 菜鸟,所以这个逻辑可能有缺陷,但上面的身份验证代码是从教程中复制的。我的想法是,也许new HttpParams()
在身份验证提供程序中分配会覆盖我为获取请求设置的参数。
当我手动或使用 Postman 创建相同的请求时,我本地环境中的 URL 是,然后我可以使用该方法http://localhost:8080/api/?text=some text goes here
成功检索参数。$req->getQueryParams()
php - Slim v4,addErrorMiddleware 似乎没有做任何事情
所以我刚开始使用苗条的 PHP 框架,我有点困惑。如文档中所述: https ://www.slimframework.com/docs/v4/middleware/error-handling.html#adding-custom-error-handlers
这应该添加某种错误处理。
所以我测试了那个代码:
现在,当我调用未定义的路线时,例如
或者只是让一些错误的代码运行(从数组访问未定义的键)
我只是得到“普通”错误
所以我想我的问题是:如何实现一个错误处理程序来处理编码错误或调用未定义的路由?
php - Slim 4 应用程序在文件上传时抛出 HttpMethodNotAllowed
我使用 php slim 4 创建了一个应用程序。当我提交一个附有文件的表单时,它在我的本地计算机上运行良好,但是当我将它托管在服务器上时,它也可以运行,但只有特定条件。
如果文件名包含某些特定字符,应用程序将引发 405 HttpMethodNotAllowed 异常。
使用相同的文件名,我在以前使用 php slim 4 托管的应用程序上对其进行了测试,但它们在这些服务器上运行良好。
后来我尝试使用 slim 4 methodoverridemiddleware,方法是添加一个带有 POST 值标头的 X-Http-Method-Override 来强制请求方法为 POST。它不再抛出 405 HttpMethodNotAllowed 但请求会剥离文件的主体。
请问有没有人遇到过这种情况,您认为可能是什么解决方案
php - 苗条的创建响应与 guzzle 流对于内容
在构建带有流式内容(巨大的 xlsx 文件内容)的苗条(苗条 4)响应时遇到问题。
错误:致命错误:未捕获的 RuntimeException:无法从第 232 行的 /home/vincent/workspace/opco2i_applis/opco2i_porttail/server/vendor/guzzlehttp/psr7/src/Stream.php 中的流中读取
我做了一些检查,文件存在并且可读。如果我在 fopen 调用后执行以下操作:
,我可以阅读我的文件的一些内容。
你能帮我找出为什么 guzzle stream 在这种情况下不能工作吗?
amazon-s3 - 使用 s3 内容文件构建 guzzle 流响应
我想构建一个 php slim 4 响应,其中包含以流模式打开的 s3 文件内容。
如果我转储 $objectInfo 变量,则与文件相关的每个信息都是正确的。如果我转储 $stream 变量,则流为空。如果我尝试对本地文件(在我的主机上,而不是在 s3 上)执行相同的操作,则没有问题。
我的目标是允许从浏览器下载文件。该文件可能很大,所以我使用流式打开的内容(我的 s3 客户端是使用 registerStreamWrapper() 构建的)。
php 版本:7.4 guzzle:guzzlehttp/guzzle 6.5.5 slim:slim/slim 4.7.1
我不明白为什么 guzzle 不能从 s3 内容创建流。提前感谢您的建议。
php - 尊重\验证与 slim4
我正在尝试按照本教程添加帖子参数验证:https ://odan.github.io/2020/10/08/slim4-respect-validation.html
我添加了一个库,并使用它:
现在,如果我发送了正确的值,一切正常。例如,当我发送不正确的名称时,抛出错误(500):
在这里我不知道如何获取无效名称的消息,而不是这个一般的消息错误。
好的,在我在 src/middleware/RespectValidationMiddleware.php 上创建中间件之后。
并尝试在错误中间件后添加:
RespectValidationMiddleware 行,当我尝试发布数据时导致 500 错误,没有错误消息。
我读到尊重/验证抛出一个 NestedValidationException,但在第一次尝试中我得到了一个 ValidatorException。不知道会不会有问题。。