怎么在 CakePHP 项目中集成 PJAX

之前发了一篇帖子提到 在 Symfony 中与 Pjax 集成,使用 Pjax 进行单页加速;这次来讲一下怎么在cakephp的项目中集成pjax;

前端的代码与在symfony里实现是一样的,这里主要讲一下后端的部分,在symfony里我们是利用了symfony的kernel.response 事件,在cakephp里我们换个做法,使用cake支持的 middleware 机制,

延伸

这里延伸一点middleware相关的知识点;middleware都是大差不差的,不同于laravel的 middleware “单传”,cake的middleware采用的是“双传(double pass)”, 两种机制有什么区别有兴趣的童鞋可以去看看 php-fig 关于 middleware的讨论,传送门, psr15仍然在讨论当中,所以并没有被广大框架实现,这里我实现了一个psr15的中间件调度器 https://github.com/slince/middleware 有兴趣的可以看看。

Middleware

书归正传,继续说在cake实现pjax的事情, 首先我们需要创建一个middleware,在你的项目 /src/Middleware 下创建 PjaxMiddleware


namespace App\Middleware;

class PjaxMiddleware

{

    public function __invoke($request, $response, $next)  //注意cake使用的是双传,所以会接收到request和response

    {

        $response = $next($request, $response);

        //如果是pjax请求则提取response body中相应的部分即可

        //由于提取代码与symfony的一致,随意不在写出来,如果有兴趣的同学可以去研究下 symfony/DomCrawler

    }

}

接下来注册你的middleware;打开/src/Application.php 文件,作如下修改:


class Application extends BaseApplication

{

    /**

    * Setup the middleware queue your application will use.

    *

    * @param \Cake\Http\MiddlewareQueue $middlewareQueue The middleware queue to setup.

    * @return \Cake\Http\MiddlewareQueue The updated middleware queue.

    */

    public function middleware($middlewareQueue)

    {

        $middlewareQueue

            ->add(ErrorHandlerMiddleware::class)

            ->add(AssetMiddleware::class)

            ->add(new RoutingMiddleware($this));

        //....

        $middlewareQueue->add(\App\Middleware\PjaxMiddleware::class);  //注册pjax middleware

        return $middlewareQueue;

    }

}

到此结束,接下来cake会自动处理pjax请求;

使用cakephp-pjax插件

为了更方便我做了一个cakephp的pjax插件,大家可以看看 https://github.com/slince/cakephp-pjax

相比上述繁琐的步骤,你只需要在安装之后在 /config/bootstrap.php 里加上即可;


Plugin::load('Slince/Pjax', [

    'bootstrap' => true,

]);

怎么样是不是很方便。:heart:

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Composer Repositories Composer源 Firegento - Magento模块Comp...
    零一间阅读 9,357评论 1 66
  • Awesome PHP 一个PHP资源列表,内容包括:库、框架、模板、安全、代码分析、日志、第三方库、配置工具、W...
    guanguans阅读 11,202评论 0 47
  • awesome-php 收集整理一些常用的PHP类库, 资源以及技巧. 以便在工作中迅速的查找所需... 这个列表...
    guanguans阅读 10,115评论 0 34
  • 当留守儿童的热点话题渐渐变成留守老人,一个个人去楼空的村落,只剩下寂寞的老人,他们有时孤独的坐在桌前,电视里喜庆热...
    四个太阳阅读 3,258评论 0 1
  • 2017年10月21日自由书写+尚军伟+9号 今天来到了国内声名远扬的额济纳旗胡杨林景区游览! 啥都不说了,直接上...
    浩子爸阅读 4,007评论 0 1

友情链接更多精彩内容