josegonzalez / cakephp-ajax-controller
无需额外思考,自动支持来自流行JavaScript库的ajax请求。
Requires
This package is auto-updated.
Last update: 2022-02-01 12:52:56 UTC
README
AjaxController
无需额外思考,自动支持来自流行JavaScript库的ajax请求。
背景
在编写 CakePHP 2.0 新教程的过程中,我发现我所写的某些内容可以抽象成一个独立的类。我就是这样做的,并将逻辑移动到了 AppController 中。
最近,我在一个需要 CakePHP 1.3 中启用ajax JSON响应的侧项目中工作。根据我的以往经验,我知道这是可行的,但为了避免重复粘贴相同的代码,我将其重写成了一个插件,以便将来重用和滥用。
要求
- CakePHP 2.x
- PHP 5.3
安装
[使用 Composer]
将插件添加到项目的 composer.json
文件中 - 例如:
{
"require": {
"josegonzalez/cakephp-ajax-controller": "dev-master"
}
}
由于此插件在其自己的 composer.json
文件中设置了类型 cakephp-plugin
,因此 composer 会将其安装到您的 /Plugins
目录中,而不是常规的 vendors 文件。建议您将 /Plugins/AjaxController
添加到您的 .gitignore 文件中。(为什么?阅读此内容。)
[手动]
- 下载此内容:http://github.com/josegonzalez/cakephp-ajax-controller/zipball/master
- 解压下载内容。
- 将生成的文件夹复制到
app/Plugin
- 将您刚复制的文件夹重命名为
AjaxController
[GIT Submodule]
在您的应用目录中输入
git submodule add -b master git://github.com/josegonzalez/cakephp-ajax-controller.git Plugin/AjaxController git submodule init git submodule update
[GIT Clone]
在您的 Plugin
目录中输入
git clone -b master git://github.com/josegonzalez/cakephp-ajax-controller.git AjaxController
启用插件
在 2.0 中,您需要在 app/Config/bootstrap.php
文件中启用插件
CakePlugin::load('AjaxController');
如果您已经使用了 CakePlugin::loadAll();
,则此步骤不是必需的。
使用方法
将以下代码放置在您的 app/app_controller.php
中
App::import('Lib', 'AjaxController.AjaxController');
class AppController extends AjaxController {
}
当进行优先选择JSON的Ajax请求时,AjaxController
将自动将整个响应转换为json。请注意,这包括通常设置的视图变量。如果您想隐藏任何数据,不要将其设置给视图。
这也正确处理了所有重定向,因此您的Ajax请求将能够像常规请求一样执行。
为了禁用Ajax请求的JSON响应,您可以设置 $this->_disableAjax = true;
或调用 $this->_disableAjax()
并传入一个数组来禁用对特定操作的JSON响应。
App::import('Lib', 'AjaxController.AjaxController');
class AppController extends AjaxController {
}
class PostsController extends AppController {
function beforeFilter() {
$this->_disableAjax('index', 'view');
}
function edit() {
$this->_disableAjax = true;
}
}
待办事项
- 单元测试
- 在需要时提供XML响应
许可证
MIT许可证(MIT)
版权所有(c)2011 Jose Diaz-Gonzalez
特此免费授予任何获取此软件及其相关文档副本(以下简称“软件”)的人,在不受限制的情况下处理软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许获得软件的人进行上述行为,但须遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。
软件按“原样”提供,不提供任何形式的保证,无论是明示的还是隐含的,包括但不限于适销性、特定用途的适用性和非侵权性。在任何情况下,作者或版权持有人不对任何索赔、损害或其他责任负责,无论该索赔、损害或其他责任是由于合同行为、侵权行为或其他行为引起的,无论是由于软件、软件的使用或以任何其他方式与软件相关联。