使用 Laravel 5.3 和 AngularJS 1.5 的路线行为不端

Posted

技术标签:

【中文标题】使用 Laravel 5.3 和 AngularJS 1.5 的路线行为不端【英文标题】:Misbehaviour on routes with Laravel 5.3 and AngularJS 1.5 【发布时间】:2017-04-30 21:23:15 【问题描述】:

我尝试使用 Laravel 5.3 和 AngularJS 创建一个应用程序。我想使用来自 Angular 而不是 Laravel 的路由和模板。

这是来自 Laravel 的 web.php 文件:

Route::get('/', function () 
    return view('index');
);

这里是 AngularJS 中 ui-router 的一部分:

routeConfig.$inject = ['$stateProvider'];
function routeConfig ($stateProvider) 
  // Routes
  $stateProvider
    .state('home', 
      url: '/',
      templateUrl: 'app/views/home.html'
    )
    .state('register', 
      url: '/register?oauth_token&oauth_verifier',
      templateUrl: 'app/views/register.html',
      controller: 'RegisterController',
      controllerAs: 'registerCtrl'
    )
  ;

我还启用了 html5mode 和 head 的基本 url。现在的问题:

当我在家并单击链接进入注册页面时,它可以工作。但是如果我尝试直接加载注册页面,它会通过 laravel 路由加载它,因为我没有在那里提到任何关于它的内容,所以我有一个 NotFoundHttpException。

【问题讨论】:

【参考方案1】:

那是因为当你刷新所有路由时,首先由 laravel 处理。

我遇到了同样的问题,有两种方法:

要么将 Angular 应用程序放在不同的域中......但你会运行 进入 CORS 问题

或者告诉 laravel 将任何路由路由到 Angular 应用,这样更容易

Route::any('path?', function()

    return view("index");
)->where("path", ".+");

【讨论】:

以上是关于使用 Laravel 5.3 和 AngularJS 1.5 的路线行为不端的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Redis 和 Laravel 5.3 在私有频道上广播通知

Laravel 5.3 和 VueJS 2 身份验证

在 Laravel 5.3 中使用相同的表单进行创建和编辑

Laravel 5.3 密码代理自定义

在 laravel 5.3 中使用带有访问器的强制转换

Laravel 5.3 - 社交登录疑问