Как интегрировать Angular2 с Symfony

Поэтому мне было поручено создать API и интерфейс для проекта. Единственное реальное требование, которое мне дали, это то, что я должен использовать PHP для создания API.

Однажды я разработал на сыром PHP, и это был небольшой двухмесячный личный проект, и это было семь лет назад. Поэтому я посмотрел на доступные фреймворки и пошел дальше с Symfony.

На переднем конце я надеялся продвинуться вперед с Angular2.

У меня в основном встроенный API, но теперь моя проблема — обслуживание угловых файлов внутри процесса Symfony. Кажется, что для каждого пути мне нужно написать действие в контроллере для этого маршрута, с которым я в основном согласен. Но большая проблема, с которой я только что столкнулся, заключается в том, что всегда предполагается, что я хочу Twig в качестве своего двигателя. Поэтому я не могу использовать скобки, которые использует Angular.

Это вообще возможно, или я неправильно привязал себя к этому?

РЕДАКТИРОВАТЬ: На данный момент я собираюсь двигаться дальше, завернув свой угловой в тег дословно

{% verbatim %}
{{ angular code }}
{% endverbatim %}

2

Решение

Вы сказали :

Кажется, что для каждого пути мне нужно написать действие в
контроллер для этого маршрута

но angular2 используется для одностраничного приложения (SPA), поэтому вам нужна только одна страница для его обслуживания:
1 маршрут> 1 действие> 1 шаблон ветки.

Для этого шаблона вы можете изменить начальный и конечный теги интерполяции:
https://docs.angularjs.org/api/ng/provider/$ interpolateProvider

Или использовать verbatim ключевое слово twig, позволяющее интерполировать символы для угловых:
http://twig.sensiolabs.org/doc/tags/verbatim.html

Но для ваших шаблонов angular2 вам не нужно использовать веточку, не нужно смешивать два языка шаблонов. Ваш API предоставляет данные в angular, которые отражают их внутри шаблонов.

И еще одна хорошая практика — предварительно скомпилировать все ваши угловые шаблоны внутри $templateCache используя такие вещи:
https://www.npmjs.com/package/gulp-ng-template

2

Другие решения

Я бы предпочел разработать интерфейс и API самостоятельно. Это было бы точкой API для меня.

Кажется, что для каждого пути мне нужно написать действие в контроллере для этого маршрута, с которым я в основном согласен.

-> Действительно хуже.

Для конфликтного синтаксиса веточки вы можете изменить начальный и конечный теги интерполяции, используя сервис interpolateProvider:

angular.module('myApp', []).config(function($interpolateProvider){
$interpolateProvider.startSymbol('{[{').endSymbol('}]}');
});

увидеть документы.

1

Мы переносим пользовательский интерфейс большого приложения Symfony на Angular, и решили использовать API Platform (https://api-platform.com/). Ранее мы использовали FOSRestBundle, но опускаем его для этой новой версии.

До сих пор мы были довольны таким подходом.

Вы спрашивали об обслуживании файлов Angular из Symfony. Мы решили хранить их в отдельном репо, чтобы их можно было даже развернуть на другом сервере. Это было бы моей рекомендацией, хотя, конечно, вы можете поместить файлы Angular в каталог / web. Однако это усложняет развертывание.

1

Я также работал в Symfony и Angular2

как я начал

don't merge two projects as we can do it for angular 1.4 version.

так как angular2 является фронтэндом и поддерживает cli.

Symfony это бэкэнд, поэтому попробуйте использовать в качестве службы

Я хотел бы предложить вам использовать Symfony2 в качестве службы

где вы можете добавить / редактировать / удалить и создать внешнюю маршрутизацию.

я сделал демо angular2 с Symfony2

Github URL

https://github.com/afeef1915/Angular2

если наконец ты

интегрировать angular2 с symfony, тогда возникнет проблема с маршрутизацией
поскольку symfony2 не поймет маршрутизацию angular2.

и синтаксис веток очень похож на файлы angular component.html

1