Laravel 5 + AngularJS html5Mode

Posted

技术标签:

【中文标题】Laravel 5 + AngularJS html5Mode【英文标题】: 【发布时间】:2015-08-21 16:14:27 【问题描述】:

我正在使用 Laravel 5 和 AngularJS 开发一个项目。我要启用

$locationProvider.html5Mode(true);

并阻止页面重新加载。当我将其设置为 false 并访问链接时,该页面不会重新加载。

这是我的route.php

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

角度代码

app.config(function($routeProvider, $locationProvider) 
    $routeProvider.when('/', 
        templateUrl: 'views/feed.html',
        controller: 'fdController'
    ).when('/collections', 
        templateUrl : 'views/collections.html',
        controller: 'clController'
    ).otherwise(
        redirectTo : '/'
    );

    $locationProvider.html5Mode(true);
);

当我访问链接时html5Mode(false) localhost:8000/#/ -> localhost:8000/#/feed页面不刷新

当我和html5Mode(true) 访问时 localhost:8000/ -> localhost:8000/feed,页面刷新,出现这个错误:

抱歉,找不到您要查找的页面。

【问题讨论】:

你能分享更多你的 Angular 代码吗?您的路线是如何配置的,如果您的链接中有诸如 target="_self" 之类的东西? PHP 端可能不是问题 我现在已经收录了 请更详细地解释问题。不清楚doesn't reload是什么意思 嘿,你找到解决这个问题的方法了吗? 【参考方案1】:

我将我的 route.php 更改为

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


Route::get('all', function ()  
    return View::make('index'); 
);

并在我的 index.php 中添加了一个基础 <base href="/"> 现在一切正常,页面没有刷新。

【讨论】:

使用Route::get('all') 是一种非常危险的做法,它可能会导致一些细微的错误,例如请求一个javascript 文件并获取您的索引视图。您应该考虑改用App::missing,因为这只会在尚未与已定义路由或资源匹配的路由上触发。 我读到 App::missing 在 laravel 5 中不可用 我认为在这种方法中您无法解决 404 错误页面。这个答案对我有一点改变:***.com/questions/16569841/… 这不是一个很好的解决方法。如果我有一个像 127.0.0.1/this/is/my/blog 这样的 AngularJS 路由,那么它将是 404...

以上是关于Laravel 5 + AngularJS html5Mode的主要内容,如果未能解决你的问题,请参考以下文章

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

Laravel 5.1/AngularJS:在 Angular 视图中重置密码(如何验证 CSRF 令牌?)

Laravel 5 + AngularJS html5Mode

带有角度路由的 Laravel 5 中间件

使用 IIS、AngularJS 和 Laravel 删除 MethodNotAllowedHttpException

laravel AngularJS全栈开发视频教学