gremo/pjax-bundle

此包已被弃用,不再维护。没有推荐替代包。

Symfony 扩展包,提供轻量级且强大的与 jQuery pjax 插件的集成。

安装量: 3,032

依赖者: 0

建议者: 0

安全: 0

星标: 4

关注者: 1

分支: 1

开放问题: 0

类型:symfony-bundle

v1.0.1 2016-04-30 15:41 UTC

This package is auto-updated.

Last update: 2020-09-04 16:19:45 UTC


README

Latest stable Downloads total GitHub issues

Symfony 扩展包,提供轻量级且强大的与 pjax jQuery 插件的集成。

欢迎新贡献者!

安装

在您的 composer.json 文件中添加该扩展包

{
    "require": {
        "gremo/pjax-bundle": "~1.0"
    }
}

然后在内核中启用该扩展包

<?php
// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new Gremo\PjaxBundle\GremoPjaxBundle(),
        // ...
    );
}

配置

默认情况下集成是 禁用的,请参阅“使用说明”以了解需要启用哪种方法。

简短配置

# GremoPjaxBundle Configuration
gremo_pjax:
    annotations:          false # should annotations be enabled?
    controller_injection: false # should controller injection be enabled?

完整配置和默认值

# GremoPjaxBundle Configuration
gremo_pjax:
    # Annotations configuration
    annotations:
        enabled: false # should annotations be enabled?
        # Annotation defaults (see "Annotations")
        defaults:
            version: ~
            filter:  true

    # Controller injection configuration
    controller_injection:
        enabled: false # should controller injection be enabled?
        # How controller parameters should be named?
        parameters:
            X-PJAX: _isPjax
            X-PJAX-Container: _pjaxContainer

使用说明

此扩展包提供两种不同的集成方式:注解和控制器注入。

注解

这是最不干扰的方式,并且是完全自动的

  • 您不需要自定义模板逻辑或控制器逻辑
  • 响应 HTML 将自动过滤(如果 filter 选项为 true),并在 pjax 容器片段中注入 <title> 标签
  • 由于过滤逻辑,响应时间将略有增加,但您仍然可以节省带宽

注意:所有不是成功响应或 text/html 的内容都将被简单地忽略。

可用选项

  • version字符串,默认 null):设置 pjax 版本(见 布局重新加载
  • filter布尔值,默认 true):响应应包含 pjax 容器还是完整的 HTML

注意:控制器动作上定义的注解从类注解继承,并替换配置中的默认值。

控制器类上的 @Pjax 注解将所有动作路由定义为 pjax 感知

<?php

use Gremo\PjaxBundle\Annotation\Pjax;

/**
 * @Pjax(version="1.2")
 */
class DefaultController extends Controller
{
    // ...
}

相反,控制器动作上的注解将路由定义为 pjax 感知

<?php

use Gremo\PjaxBundle\Annotation\Pjax;

class DefaultController extends Controller
{
    /**
     * @Pjax(filter=false)
     */
    public function indexAction(Request $request)
    {
        // ...
    }
}

控制器注入

这是最干扰的方式,但可能是最强大的一种

  • 您需要定义 pjax 动作参数(名称可配置)
  • 您需要定义自定义模板/控制器逻辑以返回完整的 HTML 或仅 pjax 容器
  • 额外的逻辑允许节省查询并减少响应时间
<?php

class DefaultController extends Controller
{
    /**
     * @Route("/", name="homepage")
     */
    public function indexAction(Request $request, $_isPjax, $_pjaxContainer)
    {
        if ($_isPjax) {
            // Return just the pjax container HTML if pjax is enabled
            // ...
        }

        // Return the full layout
        // ...
    }
}