使用 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 的路线行为不端的主要内容,如果未能解决你的问题,请参考以下文章