HollowJ
@HollowJ
PHP разработчик

Yii2 REST + EmberJS?

Пытаюсь подружить Yii2 в качестве API с EmberJS.
Все бы хорошо, но меня смущает то, как Ember и Yii работают со связями моделей. Yii джойнит связанную модель в свойство родителя, а Ember хочет видеть только ID связанных записей в родительской. Суть:
Yii:
'post': {
  'id': 1,
  'title': 'Post title',
  'text': 'some text',
  'comments': [
    {
      'id': 1,
      'title': 'some title',
      'text': 'some text'
    },
    {
      'id': 2,
      'title': 'some title',
      'text': 'some text'
    }
  ]
}


Что хочет видеть Ember:
'post': {
  'id': 1,
  'title': 'Post title',
  'text': 'some text',
  'comments': [1,2]
},
'comments': [
  {
    'id': 1,
    'title': 'some title',
    'text': 'some text'
  },
  {
    'id': 2,
    'title': 'some title',
    'text': 'some text'
  }
]


В какую сторону смотреть, что бы Yii мог отдавать данные в удобном Ember формате?
  • Вопрос задан
  • 1089 просмотров
Решения вопроса 1
Kaer_Morchen
@Kaer_Morchen
Разрабатываю web-приложения.
Если в параметрах поля модели поставить async: false, Ember будет ожидать модель в моделе, как в вашем первом варианте. Но этот вариант так себе, лучше поищите готовый serializer для Yii2 или напишите свой.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Demetriy
@Demetriy
веб и мобильная разработка
Хоть ответ уже не сильно актуален для того, кто спрашивал, но поскольку при запросе YII + Ember выдает эту тему, то напишу.

Чтобы подружить Yii2 и Ember 2 друг с другом, вплане REST (чтобы запросы Ember соответствовали ответам Yii2), нужно создать адаптер и там прописать следующее:
import DS from 'ember-data';

export default DS.RESTAdapter.extend({
    defaultSerializer: 'JSONSerializer',
    host: 'http://адрес_вашего_api'
});


Тогда все должно работать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы