Маршрутизация Angularjs + Symfony2 не может заставить ее работать

Я изучаю AngularJS и хочу интегрировать его с серверной частью SF2. Я путаюсь с маршрутами, давайте посмотрим, что у меня есть:

Когда мы заходим в /usermanager, система маршрутизации Symfony открывает контроллер, который загружает шаблон ветки. В этом шаблоне я загружаю все компоненты js, необходимые для angular, и делаю это:

 {% extends '::base.html.twig' %}

 {% block javascripts %}
    {{ parent() }}

    <script type="text/javascript" src="{{ asset('js/UserManager_Angular.js')}}"></script>
 {% endblock %}


 {% block body %}


<h1>User Manager</h1>

<div data-ng-view></div>
 {% endblock %}

Теперь это мой угловой код:

   var UserManager = angular.module('UserManager', ['ngRoute','ngResource']);

UserManager.config(function($routeProvider){
   $routeProvider 
   .when('/addnew',
   {
       controller:'addNewController',
       templateUrl:Routing.generate('_UserManager_add_new_user')
   })
   .when('/',
   {
       controller:'UserManagerHome',
       templateUrl:Routing.generate('_UserManager_getUser_List')
   })

});

UserManager.factory('data_access',['$resource', 
    function($resource){
    return $resource(Routing.generate('_UserManager_getUserList'),{},{
        query:{method:'GET',isArray:true}
    });

}]);

UserManager.controller('UserManagerHome',function ($scope,data_access){
    $scope.users = data_access.query();    
    //$scope.orderProp = 'id';

});

ps: как видите, я использую FOSBundle для демонстрации маршрута js. Я думаю, что понял, как это использовать, потому что моя фабрика правильно получает пользователей из базы данных.

Итак, я хочу загрузить файл, содержащий классические элементы angular, такие как ng-repeat и т. д. Это представлено этим маршрутом:

.when('/usermanager',
{
    controller:'UserManagerHome',
    templateUrl:Routing.generate('_UserManager_userList')
})

Вот мой файл маршрутизации:

_UserManager:
  pattern: /usermanager
  defaults: {_controller: AcmeBundle:UserManager:Home }
  options:
    expose: true

_UserManager_getUser_List:
  pattern: /usermanagerlist
  defaults: {_controller: NRtworksSubscriptionBundle:UserManager:list }
  options:
    expose: true  

_UserManager_getUserList:
  pattern: /usermanager/getuserlist
  defaults: {_controller: AcmeBundle:UserManager:getUserList }
  options:
    expose: true
  requirements:
    _format: json
    _method: GET    


_UserManager_add_new_user:
  pattern: /usermanager/addnew
  defaults : {_controller: AcmeBundle:AddNewUser:Home }
  options:
     expose: true

ps2: контроллеры почти пусты, просто отображаю шаблон ветки, который я ищу.

В настоящее время, когда я открываю /usermanager, я получаю пустую страницу только с заголовком «менеджер пользователей». Что я делаю неправильно?


person Eagle1    schedule 06.07.2014    source источник


Ответы (1)


Ваш угловой маршрут после хеша. это означает, что

 www.yoursite.com/usermanager

ведь для роутера Symfony это /usermanager, для вашего углового приложения просто /

если вы посетите это

 www.yoursite.com/usermanager/#/usermanager

тогда маршрут angulars будет /usermanager.

Сказав это, маршрутизация angular — это полностью отличная среда от вашей системы маршрутизации Symfony, и у них не должно быть конфликтов. Поскольку угловой маршрут происходит после символа #.

person Alexandros Spyropoulos    schedule 06.07.2014
comment
Хорошо, я понимаю, что я должен изменить .when('/usermanager', на .when('/', верно? Но все равно это не работает, я помещаю меня на этот адрес: 192.168.1.19/Symfony24/web/app_dev.php/usermanager# - person Eagle1; 06.07.2014
comment
Я решил это! Я предполагаю, что я неправильно выполнял маршрутизацию Symfony. Правильно ли я делаю? Имея пустые контроллеры, просто отображая шаблон? - person Eagle1; 07.07.2014
comment
Контроллеры существуют только для того, чтобы связать ваш шаблон с вашими сервисами и передать в разметку доступные переменные и функции, если вам нечего передавать, то да, вы делаете это правильно. - person Alexandros Spyropoulos; 09.07.2014
comment
если у меня есть что передать вы имеете в виду ? В противном случае я мог бы напрямую перейти к шаблону. - person Eagle1; 09.07.2014
comment
Да, если вам нужно что-то масштабировать или обрабатывать, вам нужен контроллер, иначе его можно было бы опустить. Я также предлагаю использовать angular-ui-router вместо простого. Особенно, если вы планируете вкладывать представления в какой-то момент - person Alexandros Spyropoulos; 09.07.2014