ExtJS, как запрашивать записи или вызывать методы на сервере, используя MVC? - PullRequest
0 голосов
/ 22 ноября 2011

В приложении ExtJS, в котором используется дизайн MVC, как вы можете запрашивать записи из серверной части php / mysql или вызывать методы в серверной части php при передаче объектов или данных массива?

Все примеры, которые я видел в моделях, прокси, стиль MVC, показывают простые примеры, такие как

myModel.load(123, ...

Все, что он делает, это загружает запись с идентификатором 123. В большинстве примеров также показано, как создавать записи или обновлять существующие записи.

Но что, если я хочу загрузить пользователя с именем «Джон»?

Похоже, мне нужно использовать Магазин?

В других средах (например, обмен сообщениями AMF) я обычно передаю объекты - например, создаю объект или коллекцию «Пользователь», задаю имя, вызываю что-то вроде

 userService.Load(userObject);

Затем на стороне сервера я получаю запрос на "userService.load" (метод на сервере), затем получаю объект, извлекаю то, что мне нужно, и возвращаю объект результата (или коллекцию массивов).

Есть ли примеры того, как выполнять запросы с использованием моделей / прокси в ExtJS?

Тогда как использовать объекты? Я думал, что модель будет объектом и передаст себя через определение прокси?

1 Ответ

0 голосов
/ 22 ноября 2011

Я думаю, вы поняли, что-то не так с Моделью, Модель - это просто определение Модели данных, представьте, что это определение строки на стороне клиента, давайте рассмотрим пример:

У нас на бэкэнде есть таблица для заказов, мы можем представить ее на внешнем интерфейсе с помощью модели, например:

var orders = Ext.define('Orders'. {
            extend: 'Ext.data.Model',
            fields:['id', 'user_id', 'qty', 'item_ordered'],
            proxy: { 
                       type:' ajax', 
                       url: 'orders.php',
                       reader: {
                                   type: 'json',
                                   root: 'orders'
                               }
                   }
        });

Это действительно простая модель, теперь, если я хочу получить только один заказ за раз, я могу использовать модель для этого, например:

var order = Ext.ModelManager.getModel('Orders');
order.load(1); //This will load the order with id = 1

Но, с другой стороны, если я хочу получить все заказы (например, для пользователя), я сделаю это с Store, магазины управляют коллекцией моделей, мы можем сказать, что это вид Таблица с набором строк, состоящих из структурированных данных, которые вы можете определить в своем Model, позволяет определить простое хранилище, которое использует нашу модель:

var ordersStore = Ext.create('Ext.data.Store', {
            model:'Orders',
            proxy: {
                       type: 'ajax',
                       url : 'orders.php',
                       reader: {
                                   type: 'json',
                                   root: 'orders'
                               }
                   }
    });
/* This should get us our orders for the user with id=1 and also answer your
question about how to get a user with name = 'John', you can do it in the same way */
ordersStore.load({params:{user_id:1}});

Речь идет о получении данных, как вы обрабатываете на своем сервере PHP, ну, я считаю, что это другой вопрос.
О «Моделе», проходящем через «Прокси», что верно при добавлении или обновлении ej:

order.set('qty', 4);
order.save(); // This will pass the 'Order' Model to the server.

Или:

var newOrder = Ext.create('Order', {user_id:1, qty: 2, item_ordered: 66});
newOrder.save(); // This will pass the 'Order' Model to the server too.

Здесь вы также можете получить дополнительную информацию:
Ext Store документы
Ext Модель документов

Надеюсь, это поможет вам начать работу с моделями и магазинами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...