2014-07-06 4 views
0

저는 AngularJS를 배웠고 SF2 백엔드와 통합하려고합니다. 경로가 혼란 스럽습니다. 내가 가지고있는 것을 보겠습니다 :Angularjs + Symfony2 라우팅이 작동하지 않습니다.

/usermanager로 가면 symfony 라우팅 시스템이 나뭇 가지 템플릿을로드하는 컨트롤러를 엽니 다.

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 : 지금이 내 각 코드는

{% 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 %} 

: 당신이 볼 수있는 내가 JS에 대한 FOSBundle을 사용하여이 템플릿에서 나는 각도에 필요한 모든 JS 구성 요소를로드하고이 작업을 수행 경로 노출. 내 공장이 데이터베이스에서 사용자를 올바르게 얻으므로이를 사용하는 방법이 있다고 생각합니다.

_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 :

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

내 라우팅 파일입니다

그래서 나는이이 경로로 표현되는 등 ng-repeat 같은 고전적인 각도 재료를 포함하는 파일을로드 할 : 컨트롤러는 거의 비어 있습니다. 그냥 나뭇 가지 템플릿을 렌더링하는 것입니다.

현재 /usermanager을 열면 "사용자 관리자"라는 제목의 빈 페이지가 나타납니다. 내가 뭘 잘못 했니?

답변

3

각도 경로는 해시 뒤에 있습니다. 그건 당신이/다음 angulars 경로가 될 것입니다 usermanager을이

www.yoursite.com/usermanager/#/usermanager 

를 방문 할 경우 각 응용 프로그램은 단지 /

때문이다 심포니 라우터

www.yoursite.com/usermanager 

마녀,/usermanager 것을 의미한다.

각도의 라우팅은 Symfony의 경로 시스템과 완전히 다른 환경이며 충돌이 없어야합니다. 각도 경로는 # 다음에 발생하기 때문에.

+0

좋아, 나는 ('/ usermanager', to.when ('/')로 바꿔야한다. 그래도 여전히 작동하지 않는다면이 주소에 나를 둔다 : http : //192.168.1.19/ symfony24/web/app_dev.php/usermanager #/ – Eagle1

+0

템플릿을 찾지 못해서 오류가 발생합니까? –

+0

올바르게 해결 되었습니까? 맞아요? 컨트롤러에서 템플릿을 렌더링하는 것입니까? – Eagle1

관련 문제