Slim 框架上重定向错误

2024-01-06

我想重定向到一个页面(error.php,或者可能是 404/406.php,无论错误是什么),具体取决于我网站中表单中的信息。我设法记录了这样的错误:

if ($date > $curdate) {
    return $response
        ->withStatus(406)
        ->withHeader('Content-Type', 'text/html')
        ->write('You can\'t select dates in the future!');
}

我怎样才能做到这一点sends您是否特别访问了包含该错误的页面,而不是在网络选项卡中记录/请求它?

编辑进一步解释: 现在我明白了:

Request URL:http://raspberrypi/chartAPI/api/{id}/{date1}/{date2}
Request Method:POST
Status Code:406 Not Acceptable
Remote Address:192.168.0.80:80
Referrer Policy:no-referrer-when-downgrade

这几乎按预期工作。我想做的就是它把我送到“http://raspberrypi/chartAPI/error/406 http://raspberrypi/chartAPI/error/406“(例如),并显示名为 406.php(或 error406.php 或任何您想要的名称)的文件中的内容。

Edit2:我现在设法用这个做一些事情:

return $response->withRedirect("error.php");

但我明白了:

Request URL:http://raspberrypi/chartAPI/api/{id}/{date1}/error.php
Request Method:GET
Status Code:405 Method Not Allowed

slim 抛出这个错误:

Method not allowed. Must be one of: POST

为什么要删除 {date2}?为什么它要求 POST 方法?


您可以像这样扩展 Not Found 类

<?php
namespace App\Action;

use Slim\Handlers\AbstractHandler; 
use Slim\Views\Twig; 
use Psr\Http\Message\ServerRequestInterface; 
use Psr\Http\Message\ResponseInterface;

class CustomErrorHandler extends AbstractHandler {

private $view;

public function __construct(Twig $view) { 
    $this->view = $view; 
}

public function __invoke(ServerRequestInterface $request, ResponseInterface $response) { 
    parent::__invoke($request, $response);
    $status = $response->getStatusCode();

    $this->view->render($response, $status . '.twig');

    return $response->withStatus($status);
}

借助 Slim v3、PSR-7 和中间件,上述所有操作都可以通过几行代码完成:

// $c is the DI container of Slim
$app->add(function ($request, $response, $next) use ($c) {
// First execute anything else
$response = $next($request, $response);

// Have multiple if's for each status code or use a switch based on $response->getStatusCode()
if (404 === $response->getStatusCode()) {
    // A 404 should be invoked
    $handler = $c['customErrorHandler'];
    return $handler($request, $response);
}

// Any other request, pass on current response
return $response;

}

希望这可以帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Slim 框架上重定向错误 的相关文章

  • 使用 PHP 中的 GD 库在图像上绘图

    我创建了一个代码来生成随机图案图像 它创建一个具有给定宽度和高度的图像 并用 40x40 像素的小矩形填充它 这是我的代码
  • 通过身份验证保护 CodeIgniter 2 应用程序的正确方法是什么?

    I have Ion Auth http benedmunds com ion auth 正确安装并在我的服务器上运行 我也有默认的代码点火器2 新闻 教程在同一个 CI 安装中工作 我只是在玩 并对使用身份验证系统 封闭 或保护整个应用程
  • 点击 %40 变为 %2540

    当单击包含 符号的链接时 该网址给我 40 这就是我想要的 但是一旦我点击它 一秒钟后它就在我点击后变成了 2540 单击是在电子邮件内 然后定向到网站 其中 40 更改为 2540 我怎样才能让它停止变化 它现在得到这样的参数 email
  • if/else 简写来定义变量

    我很难理解 if else 的 php 简写是如何描述的here https stackoverflow com questions 20233207 php if shorthand and echo in one line possib
  • 禁用 WooCommerce 手动/编辑订单的电子邮件通知

    需要 WooCommerce 专业知识 我需要禁用手动创建的订单的电子邮件通知 我必须使用处理状态 由于处理订单状态的自定义挂钩 我无法创建自定义状态 理想情况下 手动订单页面中可以勾选一个复选框 勾选后 它将禁止在每种状态下向客户发送电子
  • 所有 PHP 相等比较都是对称的吗?

    Is a b总是等价于 b a 我认为在 JavaScript 中 由于强制转换 有一些奇怪的情况并非如此 I think ide https stackoverflow com questions 4752579 are all php
  • 正则表达式上的换行符

    我试图替换两个标签之间的所有内容 但我无法构建正确的表达式 这就是我所做的
  • Laravel Auth:attempt() 不会持久登录

    我在网上找到了许多有类似问题的资源 但似乎没有一个解决方案可以解决我的问题 当我使用以下代码登录用户时 一切看起来都很好 email Input get email password Input get password if Auth a
  • Symfony2:为什么请求传递到受 Symfony2 中 AppCache 影响的 Kernel.Terminate EventListener

    在我的 Symfony2 2 应用程序中 我使用 onKernelTerminate EventListener 以便我可以在渲染响应后进行一些 繁重 处理 以便用户收到更快的响应时间 在我的控制器中 我在请求上设置了一个属性 以便当事件侦
  • php源代码到PO文件生成器

    我必须将我的所有回显 打印字符串转换为PHP源代码代码文件到PO file 为了语言翻译 有批次吗对流器可用于相同的 我如何做到这一点 make gettext在您的服务器上运行 setup a 翻译适配器 例如带有 gettext 适配器
  • get url 重定向时 File_get_contents() 不起作用

    我正在使用的功能是 function http post url data data url http build query data data len strlen data url date default timezone set
  • CodeIgniter 控制器 - JSON - AJAX

    我正在尝试通过 AJAX 使用 CodeIgniter 发送表单构建 并尝试使用 JSON 获取响应 但是 我只在打开开发人员选项卡时看到响应 我什至不确定这是否实际上是响应 因为它显示了两个 json 数据 它所显示的只是加载旋转器 然后
  • 如何防止在 PHP 中使用超出“使用”范围的特征方法

    我想知道是否有任何方法可以防止在 PHP 的任何类上下文之外使用特征方法 让我用一个简短的例子来解释我想要什么 这是我当前的代码 File MyFunctions php trait MyFunctions function hello w
  • PHP - 类外 use 关键字和类内 use 关键字的区别

    伙计们 美好的一天 只是想问一下有什么区别use之外的class and use在 的里面class 我也用谷歌搜索过 但我的问题与答案不匹配 Example namespace App Http Controllers Auth use
  • 访问sendBeacon发送的数据

    文档表明sendBeacon通过发送其数据HTTP POST request 但在 PHP 中 POST变量似乎是一个空数组 这是我的 JavaScript 代码 navigator sendBeacon beacon log php My
  • 如何纠正这个非法字符串偏移?

    我收到此错误 警告 第 32 行 home mysite public html wp content themes evento lib php extra class php 中的非法字符串偏移 type 我意识到文件中的这部分代码是错
  • Facebook 应用程序无法获取会话

    我正在 Heroku 上为 Facebook 开发一个非常基本的 PHP 应用程序 它显示非常基本的用户信息 如姓名 个人资料图片 但该应用程序在 getToken 方法中停止 我在登录我的个人资料后尝试了该应用程序 但仍然出现相同的消息
  • PHP 扩展开发入门 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 请推荐有关 PHP 低 级 modules 编程接口的帮助文章或教程 搜索我的书签 我发现的唯一链接是
  • 如何在 Zend MVC 中实现 SSL

    我之前已经通过使用特定的安全文件夹 例如服务器上的 https 文件夹与 http 文件夹 实现了安全页面 我已经开始使用 Zend Framework 并希望应用程序的某些部分 例如登录 使用 https 我在谷歌上搜索过 甚至在这里搜索
  • PHP print_r() 中 _r 的含义是什么?

    我见过这个答案 https stackoverflow com questions 13103410 what does r suffix mean就这样 但我不确定它对于 PHP 是否相同 如果是 可重入的含义是什么 From PHP n

随机推荐

  • 如何使用库(插入符号)更改指标?

    我想使用以下方法将指标从 RMSE 更改为 RMSLE caret library 给定一些示例数据 ivar1 lt rnorm 500 mean 3 sd 1 ivar2 lt rnorm 500 mean 4 sd 1 ivar3 l
  • LINQ + Foreach 与 Foreach + If

    我需要迭代对象列表 仅对布尔属性设置为 true 的对象执行某些操作 我正在这段代码之间争论 foreach RouteParameter parameter in parameters Where p gt p Condition do
  • 使用 mod_wsgi 从不运行 Django 的站点提供 Django 应用程序 /

    我有一个网站 目前正在使用 Django 逐个应用程序重写 服务器是RedHat 运行 Apache 2 安装 mod wsgi 一切正常 惊人的 如果我去http www example com http www example com
  • preg_replace() 找不到结束分隔符?

    I use preg replace 很多 但我不是这方面的天才 如果我启动一个功能并故意键入我想要使用的所有表情符号 例如 但今天我尝试更改它并使用 mysql 让我可以随意插入和删除它们 而无需在我的代码中播放 但是当我尝试它时 它只会
  • Angular2:检测表单变化

    在 Angular2 4 0 中我有一个FormGroup看起来像这样 this form this fb group a Validators required b Validators required c Validators req
  • macOS 上的 NavigationLink 无法在同一视图中打开

    我目前正在构建一个 macOS 应用程序SwiftUI 无 Catalyst 应该有一个侧边栏和其右侧的单个视图 NavigationView List listStyle SidebarListStyle HomeView 我的主页视图有
  • Angular 4单个API请求运行多次

    我遇到有关 Angular 4 应用程序的问题 我创建了一个应用程序 其中的数据是从第三方 API 获取的 我遇到的问题是我的 API 多次调用 但我只发送了一次请求 经过一些研发后 我发现浏览器正在使用 OPTION 方法运行航班请求 但
  • Neo4j 中匹配/删除整个子图

    假设我的数据库中有一个大图 我想删除其中的整个子图 其中我只知道该子图的起始节点 是否可以编写一个密码查询来匹配并删除整个子图 警告 我不知道更多关于子图从哪个节点开始的信息 是的 您可以通过 APOC 程序从单个节点扩展到所有子图节点路径
  • 从源代码管理中丢失后如何生成新的 .pfx 文件?

    我正在使用 GitHub 托管我正在开发的开源 Windows 10 应用程序 我不小心忽略了应用程序的 PFX 文件 因此当我删除本地副本并重新克隆存储库时 我没有了MyApp TemporaryKey pfx文件 现在 Visual S
  • NLTK 上下文无关语法生成器

    我正在开发一个带有 Unicode 字符的非英语解析器 为此 我决定使用 NLTK 但它需要预定义的上下文无关语法 如下所示 S gt NP VP VP gt V NP V NP PP PP gt P NP V gt saw ate wal
  • 在 Web 应用程序和控制台应用程序之间共享配置设置

    我想与我的控制台应用程序 同一解决方案中的 2 个项目 共享我的 VS2010 3 5 Web 应用程序设置 例如连接字符串 smtp log4net 设置 这看起来很接近 http devlicio us blogs derik whit
  • PHP - 带 GET 查询的加号

    我有一个 PHP 脚本 它通过以下方法对字符串进行基本加密
  • iOS 7 自定义转换故障

    该视频显示了我遇到的问题 http www youtube com watch v C9od 2KZAbs http www youtube com watch v C9od 2KZAbs 我正在尝试使用 UIPanGestureRecog
  • Django 1.9 URLField 删除必要的 http:// 前缀

    我看到了很多关于此的问题 但还没有找到答案 这是我的模型 class UserProfile models Model user models OneToOneField User website models URLField max l
  • Sublime Text 2 是用什么编程语言编写的 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我喜欢 Sublime text 2 及其跨平台性 你知道这个程序是用什么语言编写的 或者使用了哪些技术吗 谢谢 来自推特 http mobile t
  • UISearchDisplayController 覆盖层和栏之间的间隙

    在我的应用程序中 我尝试添加搜索功能 我有表格视图控制器和自定义顶部栏视图 我在其中显示UISearchBar 问题是覆盖视图总是位于顶部栏下方一点 并且增加了它们之间的间隙 In my 表视图控制器 m文件的viewDidLoad sup
  • C++调用基类方法切片对象

    我有这样的事情 include
  • 如何获取函数内使用的内置函数的列表

    假设我有一个名为Fun1其中我针对不同的不同流程使用了许多不同的 R 内置函数 那么如何获取该函数内使用的内置函数的列表Fun1 Fun1 lt function x y sum x y mean x y c x y print x pri
  • Vim 中是否可以实现所谓的“无干扰模式”?

    只是好奇 有点像编辑的 无干扰模式 崇高的文字 http www sublimetext com blog articles distraction free editing 是否可以将所有文本质心到视场的中间 使用宽屏显示器在全屏模式下盯
  • Slim 框架上重定向错误

    我想重定向到一个页面 error php 或者可能是 404 406 php 无论错误是什么 具体取决于我网站中表单中的信息 我设法记录了这样的错误 if date gt curdate return response gt withSta