2011-08-31 47 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

確保你的電影控制器有一個讀取方法。 –