EmberJS: изменить url для загрузки модели (ember-data)

У меня проблемы с ember-данными. Например, я создал проект в http://localhost/~ me/test

В моем проекте я создал магазин и модель следующим образом:

... init stuff here ...

var attr = DS.attr;
App.Person = DS.Model.extend({
    firstName: attr('string'),
    lastName: attr('string'),
});

App.Store = DS.Store.extend({
    revision: 11,
    adapter: DS.RESTAdapter,
});

Теперь, когда я ищу (где-то на моем пути) для такого человека

var person = App.Person.find(params);

Вызывается http://localhost/persons? post_id = 10. Конечно, этого не существует. Я бы ожидал чего-то вроде http://localhost/~ me/test/persons? Post_id = 10. Еще лучше: http://localhost/~me/test/persons.php? Post_id = 10 Как я могу изменить этот URL?

Ответ 1

Это относится к бета-версии 3 Ember Data​​h1 >

Чтобы позаботиться о префиксе, вы можете использовать свойство namespace DS.RESTAdapter. Чтобы позаботиться о суффиксе, вы хотите настроить buildURL метод DS.RESTAdapter, используя _super(), чтобы получить исходную функциональность и изменить ее. Он должен выглядеть примерно так:

App.ApplicationAdapter = DS.RESTAdapter.extend({
    namespace: '~me/test',
    buildURL: function() {
        var normalURL = this._super.apply(this, arguments);
        return normalURL + '.php';
    }
});

Ответ 2

MilkyWayJoe прав, в вашем адаптере вы можете определить пространство имен.

App.Adapter = DS.RESTAdapter.extend({
  namespace: '~/me/test'
});

Ответ 3

Это тоже сработает:

App.Person = DS.Model.extend({
    url: '~me/test/persons',
    firstName: attr('string'),
    lastName: attr('string'),
});

Или, если вы хотите использовать пространство имен и путь .php:

App.Adapter = DS.RESTAdapter.extend({
  namespace: '~/me/test',
    plurals: {
        "persons.php": "persons.php",
    }
});

App.Person = DS.Model.extend({
    url: 'persons.php',
    firstName: attr('string'),
    lastName: attr('string'),
});

Бит множественных чисел должен убедиться, что Ember Data не добавляет 's', например. person.phps