gremo / pjax-bundle
此包已被弃用,不再维护。没有推荐替代包。
Symfony 扩展包,提供轻量级且强大的与 jQuery pjax 插件的集成。
v1.0.1
2016-04-30 15:41 UTC
Requires
- php: >=5.3.3
- symfony/css-selector: ~2.4|~3.0
- symfony/dom-crawler: ~2.4|~3.0
- symfony/framework-bundle: ~2.4|~3.0
This package is auto-updated.
Last update: 2020-09-04 16:19:45 UTC
README
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 // ... } }