【问题标题】:routing is not defined路由未定义
【发布时间】:2017-07-10 14:57:29
【问题描述】:

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

https://docs.angularjs.org/error/$injector/modulerr?p0=myApp&p1=ReferenceError:%20Routing%20is%20not%20defined%0A%20%20%20%20at%20http:%2F%2Flocalhost%2Fauthenti%2Fweb%2Fapp_dev.php :30:22%0A%20%20%20%20at%20Object.invoke%20(https:%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fangular.js%2F1.6.5%2Fangular.min.js: 44:357)%0A%20%20%20%20at%20d%20(https:%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fangular.js%2F1.6.5%2Fangular.min.js:42: 237)%0A%20%20%20%20at%20https:%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fangular.js%2F1.6.5%2Fangular.min.js:42:376%0A%20% 20%20%20at%20p%20(https:%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fangular.js%2F1.6.5%2Fangular.min.js:8:7)%0A%20%20% 20%20at%20g%20(https:%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fangular.js%2F1.6.5%2Fangular.min.js:42:138)%0A%20%20%20% 20at%20gb%20(https:%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fangular.js%2F1.6.5%2Fangular.min.js:46:251)%0A%20%20%20%20at% 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% 20at%20xe%20(https:%2F%2Fcdnjs.cloudflare.com%2Fajax%2Flibs%2Fangular.js%2F1.6.5%2Fangular.min.js:21:1

代码 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 %}

代码路由.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,
            ));
        }
    }

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

【问题讨论】:

    标签: angularjs symfony


    【解决方案1】:

    看起来你需要一些注射:

    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"})
        });
    }]);
    

    【讨论】:

      【解决方案2】:

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

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

      感谢朋友的帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-11-26
        • 2018-08-20
        • 2018-06-30
        • 2019-12-30
        • 2017-06-21
        • 2018-12-16
        • 1970-01-01
        相关资源
        最近更新 更多