lucasromanojf / ext-direct
Laravel ExtJS/Sencha direct 提供商
Requires
- php: >=5.4.0
This package is auto-updated.
Last update: 2024-09-05 13:56:40 UTC
README
##信息 这是 laravel 4.x 的 ext-direct 提供商(也支持 extjs 5)
ext-direct 的理念是允许 JavaScript 调用远程 PHP 方法,就像它们是客户端 JavaScript 方法一样。这大大减少了开发时间。
高度(几乎99%)基于 http://www.sencha.com/forum/showthread.php?102357-Extremely-Easy-Ext.Direct-integration-with-PHP
原始类仅稍微修改。
##安装##
将此行添加到 composer.json 的 require 列表,并运行 composer update
"bulforce/ext-direct": "dev-master"
添加到 app.php 的 'providers' 数组
'Bulforce\ExtDirect\ExtDirectServiceProvider',
此包附带一个 Facade,但您不需要将其包含在 app.php 中,因为它会自动包含。
您 必须 发布或创建此配置文件
../laravel_project/app/config/packages/bulforce/ext-direct/config.php
您 必须 编辑 config.php 文件
<?php
return array(
'namespace' => 'Ext.rpc',
'descriptor' => 'Ext.rpc.REMOTING_API',
'timeout' => 30,
'debug' => true,
'api_classes' => array(
'Items' => 'ItemsController'
)
);
最重要的部分是 api_classes 数组,在那里您必须列出所有您希望 extjs 直接调用的应用程序中的类(通常是控制器)。
注意 这不一定是关联数组,您可以直接在普通索引数组中列出类名。但是,如果您将它们作为关联数组列出,则可以使用数组元素 key
从 extjs 调用它们,而不是实际的控制器类名。这样,您可以隐藏您的真实应用程序结构,从前端隐藏。
直接方法标签 为了使控制器方法可供 extjs/sencha 直接调用,必须满足 两个 条件
1. Method needs to be declared as **public**
2. Method needs to contain comment tag @direct
示例
/** * @direct */ public function read($params = null) { return Item::take(50)->get(); }
在 routes.php 中添加一个路由
Route::any('/rpc', function() { return ExtDirect::provide(); });
最后,在 index.html 中添加类似的内容(在 extjs 库之后和您的应用程序代码之前!!!)
<script type="text/javascript" src="http://laravel_project.dev/rpc?javascript"></script>
现在,您应该可以直接从 JavaScript 调用 Laravel 控制器方法
Ext.rpc.Items.read(function(response) { console.log(response); }); //with params, params will be passed to the controller method as php object Ext.rpc.Items.read({page: 5},function(response) { console.log(response); }); //use it in direct stores api object api: { read: Ext.rpc.Items.read }