内容简介:使用可检查过后我的页面里都是有查源码加调试输出找到问题的原因:
使用 spatie/laravel-pjax
的时候遇到总是 abort(422)
的情况,查了一圈大多说原因是渲染的页面里找不到监听的 pjax container。
可检查过后我的页面里都是有 id="pjax-container"
的,请求头里也有 X-PJAX-CONTAINER: #pjax-container
。
查源码加调试输出找到问题的原因:
spatie/laravel-pjax
里使用了 Symfony\Component\DomCrawler\Crawler
来检查渲染的 DOM 中是否存在指定的 X-PJAX-CONTAINER
。
// Middleware/FilterIfPjax.php protected function filterResponse(Response $response, $container) { $crawler = $this->getCrawler($response); $response->setContent( $this->makeTitle($crawler). $this->fetchContainer($crawler, $container) ); return $this; }
abort(422)
发生在 fetchContainer()
中:
protected function fetchContainer(Crawler $crawler, $container) { $content = $crawler->filter($container); if (!$content->count()) { abort(422); } return $content->html(); }
注意到在 filterResponse()
中是把当前的 $response
传给了 $crawler
的,那么如果当前的 $response
其实是个错误页面呢?这里就会发生找不到 #pjax-container
的情况了。
输出一看果然, $response
是个异常信息页面。我遇到的问题是忘了 migrate
。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
精通Windows应用开发
[美] Jesse Liberty Philip Japikse Jon Galloway / 苏宝龙 / 人民邮电出版社 / 59.00元
Windows 8.1的出现不仅提供了跨设备的用户体验,也提供了跨设备的开发体验。本书着眼于实际项目中所需要的特性,以及现有C#编程知识的运用,对如何最大限度地利用Metro、WinRT和Windows 8进行了讲解,内容详尽,注重理论学习与实践开发的配合。 Windows 8.1和WinRT的作用及其特殊性 如何使用先进特性创建具有沉浸感和吸引力的Windows 8.1应用 如......一起来看看 《精通Windows应用开发》 这本书的介绍吧!