2011-08-31 133 views
0

我想用extjs 3.2通过可编辑网格来开发蛋糕php。Extjs蛋糕php通过可编辑网格更新,插入和删除

在网格中我们可以插入并更新和删除操作。

当我们从“电影”模型文件中获取数据,并创建视图/电影/ JSON一个JSON文件

在JSON文件中我得到的数据,但

如果我要显示网格数据,则此json文件数据我如何在网格商店购买。

谢谢。

+2

在来这里之前,您应该尝试自己做一些小小的研究,如果您不知道它是如何工作的,请查看API和教程,然后附带具体问题。这是CakePHP的食谱,它有几个教程,并解释了你需要知道的一切http://book.cakephp.org/如果你的问题关闭不好,不要再次重新打开相同的问题。 – 8vius

+0

我不明白的问题 – santiagobasulto

回答

0

在工作中,我们使用CakePHP和ExtJS进行了广泛的工作。

我们单独使用ExtJS的视图只有调用才能包含该视图的特定JavaScript文件,以及一个用于渲染ExtJS模块的div。

如果你在你的布局的头部使用<?php echo $scripts_for_layout ?>你可以从里面视图使用

<?php echo $this->Html->script('relative/path/from/js/folder.js', array('inline' => false)) ?> 

在内线轻松地添加一个JavaScript文件,你要设置网格使用一个Ext.data.Store的实例,通过商店和它的依赖关系(您还需要代理,阅读器和编写器),您可以将数据来回发送到CakePHP控制器。

我们更喜欢使用JSON来处理我们的数据,因为它很容易在我们需要的地方操作和保存。

我们的基本设置通常是这样的。

在ExtJS的

var proxy = new Ext.data.HttpProxy({ 
    api: { 
     // these will map to cakephp controller actions 
     create: { url: '/cake_controller/create', method: 'POST' }, 
     read: { url: '/cake_controller/read', method: 'GET' }, 
     update: { url: '/cake_controller/update', method: 'POST' }, 
     destroy: { url: '/cake_controller/destroy', method: 'POST' } 
    } 
}); 

var fields = Ext.data.Record.create([ 
    // this will map to your database fields (or at least the ones your 
    // returning from cakephp to put in your grid 
    { name: 'id', type: 'int' }, 
    { name: 'another_model_field' }, 
    { name: 'created', type: 'date', dateFormat: 'Y-m-d H:i:s' }, 
    { name: 'modified', type: 'date', dateFormat: 'Y-m-d H:i:s' }, 
]); 

var reader = Ext.data.JsonReader({ 
    root: 'controllerName' // this is the root node of the json cakephp is replying with 
}, fields); 

var writer = Ext.data.JsonWriter({ 
    encoded: true, 
    writeAllFields: true 
}); 

var store = Ext.data.Store({ 
    storeId: 'myStore', 
    proxy: proxy, 
    reader: reader, 
    writer: writer, 
    autoSave: true, 
    autoLoad: true 
}); 

那么你的网格内,设置你的店,你刚刚创建

var grid = Ext.grid.GridPanel({ 
    store: store, 
    ... 
    ... 
    ... 
}); 

任何时候,该店换了一个,它会调用相关的API方法(创建,读取,更新,销毁)映射到您的CakePHP控制器操作。在您的动作中,您可以通过$this->params['form']访问数据。如果您使用Json,就像我们一样,您可以使用json_decode($this->params['form'], true)将其解码为关联数组,以便在CakePHP方面轻松进行操作/持久化。

您可以从CakePHP操作返回某些内容,以便ExtJS知道save/update/etc是否成功。我们通常只返回Json编码的array('success' => true)

我希望这可以帮助你开始,它需要很多东西,但是很多打字工作并不是很多工作。一旦你做了几次就很容易记住。

每当您使用ExtJS时,请记住docs是您的朋友!

+0

谢谢你的重播.. – mayur

+0

感谢布兰登科德尔,我尝试与API对象,但它没有显示的数据在网格中。首先我创建控制器文件“movie_controller”,然后在视图/文件夹/创建一个CTP文件“读取”,然后在JS API对象我写下读:{url:'/ movie_controller/read',方法:'GET'} , – mayur

+0

确保你的电影控制器有一个读取方法。 –