LINUX.ORG.RU

Angular JS and Symfony

 , , web-development.php


0

2

День добрый сообщество. Пишу проект на Symfony2, решил front-end перенести полностью на Angular JS, естественно вся архитектура приложения будет в виде Rest, но вот столкнулся с небольшой проблемой, подключил angular к шаблонам, дабы не было конфликтов twig, пустил их в формате html.php, но вернее буду использовать чисто html расширение, и вот тут делема, все роуты методов API описаны, и стучаться к ним буду сервисом $http или $resource, но в angular я использую routeProvider, который по заданым правилам кидает меня с шаблона на шаблон, и вот как мне теперь роуты эти сопоставить с роутом локального хоста на котором висит API, вернее допустим есть localhost/app_dev.php/action , как к нему стучаться я знаю с angular, но как роуты в angular прописать, чтобы работало с API это уже делема)



Последнее исправление: cetjs2 (всего исправлений: 1)

ЯННП. Можно то же самое, но по-русски?

Зачем тебе сопоставлять роуты на статике с роутами REST API?

Hater ★★
()

А зачем ты собрался ангуляровское приложение отдавать как динамику?

Dantix ★★
()
Ответ на: комментарий от Hater

Может не так выразился, просто хочу весь front-end повесить на angular, но там ест загвоздка, чтобы angular, норм работал с API, ему нужно быть на том же хосте что и API

Berdin
() автор топика
Ответ на: комментарий от Berdin

Ну а в чём проблема? У меня сейчас один из сайтов так работает. Веб-сервер (apache или nginx) на одном и том же хосте сёрвит и статику, и проксирует на бекенд.

Hater ★★
()
Ответ на: комментарий от Berdin

А почему может быть ненормально? Просто в конфиге какой-то uri смотрит на статику, другой - на веб-сервис.

Hater ★★
()
Ответ на: комментарий от Hater

Типа разбить на два хоста? Один смотрит в статику, а другой в хост API? Просто на одном хосте такое сделать вроде нельзя, там как раз и нужна связка nginx+apache.

Berdin
() автор топика

Ничего не понял. Примеры кода можно? Я у себя сделал так:

$routeProvider
            .when('/', {templateUrl: 'page/home', controller: 'homeController'})
            .when('/login', {templateUrl: 'page/login', controller: 'loginController'})
            .when('/logout', {templateUrl: 'page/logout', controller: 'logoutController'})
            .otherwise({redirectTo: '/'});

routing.yml:

root:
  path: /
  defaults: {_controller: pages:root, _handler: html}
page:
  path: /page/{name}
  defaults: {_controller: pages:get, _handler: html}
  requirements: {name: '[a-z]+'}
rpc:
  path: /rpc/
  defaults: {_controller: rpc:rpc}
  requirements: {_method: POST}
Вот и всё решение.

Kilte ★★★★★
()
Ответ на: комментарий от Berdin

Просто на одном хосте такое сделать вроде нельзя, там как раз и нужна связка nginx+apache.

nginx+apache применяют для ускорения доступа к статическим файлам. Так или иначе, веб-приложения на PHP, запускаемые под апачем, как правило содержат .htaccess, в котором прописано что-то вроде

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

Это означает, что если файла по заданному URI апач не находит, то вызывается index.php с передачей ему исходного URI. Ангуляру же надо просто статические html, просто положи их в удобное место и всё.

Кстати для REST рекомендую ангуляровскую библиотеку Restangular, а для удобной навигации есть angular-ui-router.

static_lab ★★★★★
()
Последнее исправление: static_lab (всего исправлений: 1)
Ответ на: комментарий от Berdin

чтобы angular, норм работал с API, ему нужно быть на том же хосте что и API

Вовсе нет. Есть же CORS.

risenshnobel ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.