我想在响应返回的地方覆盖laravel。然后我想检测状态代码(200或301),如果请求是ajax。如果状态代码是200和请求是ajax我想返回自定义html.类似的东西:
protected function returnResponse($statusCode, $html, $redirectUrl){
if($statusCode == 200 && isAjax()){
return parent::returnResponse($customStatusCode, $customHtml, $customRedirectUrl);
}
return parent::returnResponse($statusCode, $html, $redirectUrl);
}
编辑:我有这个:
class SomeMiddleware
{
public function handle($request, Closure $next)
{
// do before
$request = $next($request);
//do after
return $request;
}
}
但是如何检测当前响应是否重定向?
我的最终解决方案:
<?php
namespace App\Http\Middleware;
use Closure;
use Response;
use Request;
class AjaxForm
{
public function handle($request, Closure $next, $guard = null)
{
$response = $next($request);
if(Request::ajax() && $response->status() == 301) {
return (Response::make($response->getTargetUrl(), '200'));
}
return $response;
}
}
如果您想检查最终响应并可能返回替代响应,让我们编写一个简单的中间件。
听起来您希望在构建默认响应之后,在最后进行检查(这样您就可以检查它)。因此,我们将这样开始:
// First get the default response
$response = $next($request);
我们的$response
变量现在将保存Laravel即将响应的响应。
如果要查看响应是否为重定向,可以轻松检查RedirectResponse
实例:
$isRedirect = $response instanceof \Illuminate\Http\RedirectResponse;
您可以简单地测试原始请求是否为ajax:
$isAjax = $request->ajax();
如果您现在想返回一个不同的响应,而不是您收到的响应,我会使用简单的响应()
助手方法:
return response($content, $status);
综合起来,我相信这大概就是你要找的:
use Illuminate\Http\RedirectResponse;
class HijackMiddleware
{
public function handle($request, Closure $next)
{
$response = $next($request);
if($request->ajax() && $response instanceof RedirectResponse) {
return response("This is a <strong>different and custom</bold> response");
}
return $response;
}
}
我经常使用助手,我只是向用户返回带有消息的数据。现在我必须包括超文本传输协议状态代码,但我不想更改每个响应(这很可能是坏的)。 因此,我试图通过创建自己的
本文向大家介绍跟我学Laravel之配置Laravel,包括了跟我学Laravel之配置Laravel的使用技巧和注意事项,需要的朋友参考一下 当你需要在运行时访问配置项时,可以使用Config类: 获取一个配置项的值** 如果配置项不存在,你还可以指定返回的默认值: 为配置项赋值 注意"点"式语法可以用来访问不同文件里的配置项的值。你还可以在运行时为配置项赋值。: 在程序运行时设置的配置值只在本
本文向大家介绍跟我学Laravel之安装Laravel,包括了跟我学Laravel之安装Laravel的使用技巧和注意事项,需要的朋友参考一下 安装Composer Laravel框架使用Composer(PHP包管理工具,参考 Composer 中文文档)来管理代码依赖性。 首先,你需要下载Composer的PHAR打包文件( composer.phar ),下载完成后把它放在项目目录下或者放到
我是新来的Laravel使用本地开发环境与家园尝试运行简单的测试 路由/网络。php: 运行phpunit返回404错误 vagrant@homestead:~/code/laravel$phpunit phpunit 6.4。3由塞巴斯蒂安·伯格曼和撰稿人撰写。 .F.3/3(100%) 时间:1.07秒,内存:10.00MB 有1次失败: 1) Tests\Feature\UserTest::
我正在将我的Laravel5.3网站升级到5.5,无法让Dusk在我的本地主机上正常工作。我有其他单元测试可以在本地主机上正常工作,但是由于某些原因,Dusk对任何本地页面返回。本地页面似乎工作很好,在我的桌面上浏览它。 我的DuskTestCase null
我有一个严重的问题与Livewire从api响应传递数据到组件刀片文件。起初它加载良好,当我点击的时候。下拉列表会在下面抛出一个错误。 Livewire在尝试为[sign up]组件添加水合物时遇到损坏的数据。确保Livewire组件的[名称、id、数据]在请求之间未被篡改。 我有一个我正在加载的下拉列表,一开始它加载得很好,但当我从下拉列表中选择某个内容时,它抛出了那个错误。 下面是我的组件代码