路由未定义

时间:2017-07-10 14:57:30

标签: angularjs symfony

当我在角度使用路由symfony时我使用FOSJsRoutingBundle,但我有这个错误:

https://docs.angularjs.org/error/ $注射器/ modulerr P0 = MyApp来&安培; P1 =的ReferenceError:%20Routing%图20是%20not%20defined%0A%20%20%20%20原子%20http:%2F%2Flocalhost%2Fauthenti%2Fweb %2Fapp_dev.php:30:22%0A%20%20%20%20原子%20Object.invoke%20(HTTPS:%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fangular.js%2F1.6.5%2Fangular。 min.js:44:357)%0A%20%20%20%20原子%20D%20(HTTPS:%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fangular.js%2F1.6.5%2Fangular.min。 JS:42:237)%0A%20%20%20%20个原子%20https:%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fangular.js%2F1.6.5%2Fangular.min.js:42:376% 0A%20%20%20%20原子%20P%20(HTTPS:%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fangular.js%2F1.6.5%2Fangular.min.js:8:7)%0A% 20%20%20%20原子%20克%20(HTTPS:%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fangular.js%2F1.6.5%2Fangular.min.js:42:138)%0A%20% 20%20%20原子%20GB%20(HTTPS:%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fangular.js%2F1.6.5%2Fangular.min.js:46:251)%0A%20%20% 20%20原子%20c的20%(HTTPS:%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fangular.js%2F1.6.5%2Fangular.min.js:22:19)%0A%20%20%20 %20AT%20UC%20(HTTPS:%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fangular.js%2F1.6.5%2Fangular.min.js:22:332)%0A%20%20%20%20原子%20xe%20(HTTPS:%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fangular.js%2F1.6.5%2Fangular.min.js:21:1

code index.html.twig:

{% extends 'base.html.twig' %}
    {% block title %} Acceuil {% endblock %}
    {% block stylesheets %}<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.3.7/cerulean/bootstrap.min.css">
    {% endblock %}
    {% block body %}
    <div class="container" ng-app="myApp">
        <p><a href="#/!">Acceuil</a></p>

    <a href="#!login">Login</a>
    <a href="#!register">Register</a> <br><br>

    <div ng-view></div>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.5/angular.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.5/angular-route.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/todc-bootstrap/3.3.7-3.3.13/js/bootstrap.min.js"></script>

    <script>
    var app = angular.module("myApp", ["ngRoute"]);
    app.config(function($routeProvider) {
        $routeProvider
        .when("/", {
            templateUrl: Routing.generate('homepage',{template:"default/index.html.twig"})
        })
        .when("/login", {
            templateUrl: Routing.generate('login',{template:"default/login.html.twig"})
        })
        .when("/register", {
            templateUrl: Routing.generate('register',{template:"default/registere.html.twig"})
        });
    });
    </script>

    </div>
    {% endblock %}

code routing.yml:

app:
      resource: '@AppBundle/Controller/'
      type: annotation

  register:
      path:     /register
      defaults: { _controller: MedBundle:Default:register }
      options:
          expose: true


  api_login_check:
      path: "/login_check"

  api:
     resource: "@MedBundle/Resources/config/routing_rest.yml"
     type:     rest
     prefix:   / 
     options:
          expose: true   

  fos_js_routing:
      resource: "@FOSJsRoutingBundle/Resources/config/routing/routing.xml"   

codeApiController.php:

<?php

    namespace MedBundle\Controller;

    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
    use Symfony\Component\HttpFoundation\Request;
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use FOS\RestBundle\Controller\Annotations\RouteResource;
    use Med\MedBundle\Entity\Med;
    use Symfony\Component\HttpFoundation\JsonResponse;
    use FOS\RestBundle\View\ViewHandler;
    use FOS\RestBundle\View\View;



     Class ApiController extends Controller {

        public function getAction() {
            $em = $this->getDoctrine()->getManager();
            $test = $em->getRepository('MedBundle:Med')->findAll();
            $viewHandler = $this->get('fos_rest.view_handler');

            // Création d'une vue FOSRestBundle
            $view = View::create($test);
            $view->setFormat('json');

            // Gestion de la réponse
            return $viewHandler->handle($view);
            //return array('test'=>$test);
        }

        public function loginAction() {
            $em = $this->getDoctrine()->getManager();
            return $this->render('default/login.html.twig');
        }

     }

代码DefaultController.php:

<?php

    namespace AppBundle\Controller;

    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Symfony\Component\HttpFoundation\Request;

    class DefaultController extends Controller
    {
        /**
         * @Route("/", name="homepage")
         */
        public function indexAction(Request $request)
        {   
            // replace this example code with whatever you need
            return $this->render('default/index.html.twig', array(
                'base_dir' => realpath($this->container->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
            ));
        }
    }

请帮我解决这个问题,谢谢

2 个答案:

答案 0 :(得分:0)

看起来你需要一些注射:

app.config(['$routeProvider', function($routeProvider) {
  $routeProvider
    .when("/", {
      templateUrl: Routing.generate('homepage'
        {template:"default/index.html.twig"})
    })
    .when("/login", {
      templateUrl: Routing.generate('login'
        {template:"default/login.html.twig"})
    })
    .when("/register", {
      templateUrl: Routing.generate('register'
        {template:"default/registere.html.twig"})
    });
}]);

答案 1 :(得分:0)

搜索后我解决了bug,我在代码中添加了这两行:

    <script type="text/javascript" src="{{ asset('bundles/fosjsrouting/js/router.js') }}"></script>
<script type="text/javascript" src="{{ path('fos_js_routing_js', {"callback": "fos.Router.setData"}) }}"></script>

感谢我的朋友的帮助